How can I make docker-compose build an image from a remote git repository?

Docker-compose allows you to utilize either preƫxisting docker images or build from source. For the build option, the official reference requires

Either a path to a directory containing a Dockerfile, or a url to a git repository.

  • Run installation command in an already existing docker image (not container)?
  • How do I use map[string]struct{}
  • kubernetes cannot pull local image
  • docker - change storage folder dynamically
  • Dockerpy executing command to cat log file
  • Converting a mounted volume to a Docker Image
  • I’d like to take advantage of the latter case, so that I don’t have to create a git submodule in my project, or register a new repository on Docker Hub. Unfortunately, there are no examples for how to format the url, and every form I’ve tried is mistaken for a relative file path.

    e.g.

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

    Fails with the error:

    ERROR: build path /{MY_CURRENT_PATH}/https:/github.com/letsencrypt/letsencrypt.git either does not exist or is not accessible.

    I didn’t have any more luck with the other forms I’ve tried:

    • git@github.com:letsencrypt/letsencrypt.git
    • git://github.com/letsencrypt/letsencrypt.git
    • https://github.com/letsencrypt/letsencrypt

  • Docker image already pushed issue?
  • script if version in package.json has changed
  • Docker : Start mysql and apache from entrypoint or CMD
  • Using host env variable with docker remote API
  • python cannot import module
  • How to configure Debian SSHD for remote debugging in a Docker container?
  • 2 Solutions collect form web for “How can I make docker-compose build an image from a remote git repository?”

    Are you running version 1.5.2? It looks like this was actually recently added in https://github.com/docker/compose/pull/2430. Try upgrading.

    Example:

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

    Tested with:

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

    The file tests/unit/config/config_test.py shows:

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

    This is confirmed with compose/config/config.py#L79-L85:

    DOCKER_VALID_URL_PREFIXES = (
        'http://',
        'https://',
        'git://',
        'github.com/',
        'git@',
    )
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.