Run docker-compose build in .gitlab-ci.yml

前端 未结 9 1211
臣服心动
臣服心动 2020-12-12 14:06

I have a .gitlab-ci.yml file which contains following:

image: docker:latest

services:
  - docker:dind
         


        
相关标签:
9条回答
  • 2020-12-12 14:55

    Alpine linux now has a docker-compose package in their "edge" branch, so you can install it this way in .gitlab-ci.yml

    
    a-job-with-docker-compose:
      image: docker
      services:
        - docker:dind
      script:
        - apk add docker-compose --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ --allow-untrusted
        - docker-compose -v
    
    0 讨论(0)
  • 2020-12-12 14:58

    It really took me some time to get it working with Gitlab.com shared runners.

    I'd like to say "use docker/compose:latest and that's it", but unfortunately I was not able to make it working, I was getting Cannot connect to the Docker daemon at tcp://docker:2375/. Is the docker daemon running? error even when all the env variables were set.

    Neither I like an option to install five thousands of dependencies to install docker-compose via pip.

    Fortunately, for the recent Alpine versions (3.10+) there is docker-compose package in Alpine repository. It means that @n2o's answer can be simplified to:

    test:
      image: docker:19.03.0
    
      variables:
        DOCKER_DRIVER: overlay2
        # Create the certificates inside this directory for both the server
        # and client. The certificates used by the client will be created in
        # /certs/client so we only need to share this directory with the
        # volume mount in `config.toml`.
        DOCKER_TLS_CERTDIR: "/certs"
    
      services:
        - docker:19.03.0-dind
    
      before_script:
        - apk --no-cache add docker-compose      # <---------- Mind this line
        - docker info
        - docker-compose --version
    
      stage: test
      script:
          - docker-compose build
    

    This worked perfectly from the first try for me. Maybe the reason other answers didn't was in some configuration of Gitlab.com shared runners, I don't know...

    0 讨论(0)
  • 2020-12-12 15:05

    there is tiangolo/docker-with-compose which works:

    image: tiangolo/docker-with-compose
    
    stages:
      - build
      - test
      - release
      - clean
    
      
    before_script:
      - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
    
    build:
      stage: build
      script:
        - docker-compose -f docker-compose-ci.yml build --pull 
    
    
    test1:
        stage: test
        script:
            - docker-compose -f docker-compose-ci.yml up -d
            - docker-compose -f docker-compose-ci.yml exec -T php ...
    
    0 讨论(0)
提交回复
热议问题