web-dev-qa-db-fra.com

Comment puis-je faire en sorte que docker-compose crée une image à partir d'un référentiel git distant?

Docker-compose vous permet d'utiliser des images de docker préexistantes ou de construire à partir de la source. Pour l'option de construction, le référence officielle nécessite

Soit un chemin vers un répertoire contenant un Dockerfile, ou une URL vers un dépôt git .

Je voudrais profiter de ce dernier cas, pour ne pas avoir à créer un sous-module git dans mon projet, ni enregistrer un nouveau référentiel sur Docker Hub. Malheureusement, il n'y a pas d'exemples sur la façon de formater l'URL, et chaque formulaire que j'ai essayé est confondu avec un chemin de fichier relatif.

par exemple.

---
letsencrypt:
  build: https://github.com/letsencrypt/letsencrypt.git
...

Échoue avec l'erreur:

ERREUR: le chemin de génération /{MY_CURRENT_PATH}/https:/github.com/letsencrypt/letsencrypt.git n'existe pas ou n'est pas accessible.

Je n'ai plus eu de chance avec les autres formes que j'ai essayées:

33
billwanjohi

Utilisez-vous la version 1.5.2? Il semble que cela ait été récemment ajouté dans https://github.com/docker/compose/pull/24 . Essayez la mise à niveau.

Exemple:

---

version: '2'

services:
  redis:
    image: "redis:3.2.3"
    hostname: redis

  redis-commander:
    build: https://github.com/joeferner/redis-commander.git
    command: --redis-Host redis
    links:
      - "redis:redis"
    ports:
      - 8081

Testé avec:

$ docker-compose -v
docker-compose version 1.11.2, build dfed245
21
Andy Shinn

Le fichier tests/unit/config/config_test.py montre:

def test_valid_url_in_build_path(self):
    valid_urls = [
        'git://github.com/docker/docker',
        '[email protected]:docker/docker.git',
        '[email protected]:atlassianlabs/atlassian-docker.git',
        'https://github.com/docker/docker.git',
        'http://github.com/docker/docker.git',
        'github.com/docker/docker.git',
    ]

Ceci est confirmé par compose/config/config.py#L79-L85 :

DOCKER_VALID_URL_PREFIXES = (
    'http://',
    'https://',
    'git://',
    'github.com/',
    'git@',
)
7
VonC