I have a .gitlab-ci.yml
file which contains following:
image: docker:latest
services:
- docker:dind
Docker also provides an official image: docker/compose
This is the ideal solution if you don't want to install it every pipeline.
Note that in the latest version of GitLab CI/Docker you will likely need to give privileged access to your GitLab CI Runner and configure/disable TLS. See Use docker-in-docker workflow with Docker executor
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
# Official docker compose image.
image:
name: docker/compose:latest
services:
- docker:dind
before_script:
- docker version
- docker-compose version
build:
stage: build
script:
- docker-compose down
- docker-compose build
- docker-compose up tester-image
Note that in versions of docker-compose
earlier than 1.25:
Since the image uses
docker-compose-entrypoint.sh
as entrypoint you'll need to override it back to/bin/sh -c
in your.gitlab-ci.yml
. Otherwise your pipeline will fail withNo such command: sh
image:
name: docker/compose:latest
entrypoint: ["/bin/sh", "-c"]