Hoe kan ik docker-compose een afbeelding laten bouwen vanuit een externe git-repository?

Met Docker-compose kunt u ofwel bestaande docker-images gebruiken of vanaf de bron bouwen. Voor de build-optie vereist de officiële referentie

Ofwel een pad naar een map die een Dockerfile bevat, of een url naar een git-repository.

Ik wil graag profiteren van het laatste geval, zodat ik geen git-submodule in mijn project hoef te maken of een nieuwe repository op Docker Hub hoef te registreren. Helaas zijn er geen voorbeelden voor het formatteren van de url, en elke vorm die ik heb geprobeerd, wordt aangezien voor een relatief bestandspad.

bijv.

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

Mislukt met de fout:

FOUT: bouwpad /{MY_CURRENT_PATH}/https:/github.com/letsencrypt/letsencrypt.git bestaat niet of is niet toegankelijk.

Ik had geen geluk meer met de andere vormen die ik heb geprobeerd:


Antwoord 1, autoriteit 100%

Gebruik je versie 1.5.2? Het lijkt erop dat dit onlangs is toegevoegd in https://github.com/docker/compose/pull/ 2430. Probeer te upgraden.

Voorbeeld:

---
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

Getest met:

$ docker-compose -v
docker-compose version 1.11.2, build dfed245

Antwoord 2, autoriteit 28%

Het bestand tests/unit/config/config_test.pytoont:

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',
    ]

Dit wordt bevestigd met compose/config/config.py#L79-L85:

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

Antwoord 3, autoriteit 2%

Ik denk dat er nu een betere manier is om dit te doen!

Als je een Docker-bestand wilt gebruiken dat zich in de repo bevindt en de repo is openbaar, kun je het beste het onbewerkte bestand gebruiken.

Bijvoorbeeld voor het bestand Dockerfile_dev in https://github.com/certbot/certbotzou je https://raw.githubusercontent.com/certbot/certbot/master/Dockerfile-dev

Voeg het dan in docker-compose als volgt toe om het Dockerbestand vanaf de externe locatie te gebruiken.

certbot_dev:
  image: certbot-dev
  build: https://raw.githubusercontent.com/certbot/certbot/master/Dockerfile-dev

Je kunt de onbewerkte link vinden als je op een knop met de naam ‘Raw’ klikt in het bestandsvoorbeeld: https://github.com/certbot/certbot/blob/master/Dockerfile-dev

vind onbewerkt bestand op github

Other episodes