Solución:
Siguiendo la documentación oficial:
# .gitlab-ci.yml
image: docker
services:
- docker:dind
build:
script:
- apk add --no-cache docker-compose
- docker-compose up -d
Ejemplo de docker-compose.yml:
version: "3.7"
services:
foo:
image: alpine
command: sleep 3
bar:
image: alpine
command: sleep 3
Personalmente, ya no seguimos este flujo, porque pierde el control sobre los contenedores en ejecución y pueden terminar funcionando sin fin. Esto se debe al ejecutor docker-in-docker. Desarrollamos un script de Python como una solución para eliminar todos los contenedores antiguos en nuestro CI, que se puede encontrar aquí. Pero ya no sugiero iniciar contenedores como este.
Docker también proporciona un oficial imagen: docker/compose
Esta es la solución ideal si no desea instalarla en todas las tuberías.
Tenga en cuenta que en la última versión de GitLab CI / Docker probablemente necesitará otorgar acceso privilegiado a su GitLab CI Runner y configurar / deshabilitar TLS. Consulte Usar el flujo de trabajo de Docker-in-Docker con el ejecutor de Docker
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
Tenga en cuenta que en las versiones de docker-compose
antes de 1.25:
Dado que la imagen usa
docker-compose-entrypoint.sh
como punto de entrada necesitarás anular volver a/bin/sh -c
en tus.gitlab-ci.yml
. De lo contrario, su canalización fallará conNo such command: sh
image:
name: docker/compose:latest
entrypoint: ["/bin/sh", "-c"]
Creé un contenedor de ventana acoplable simple que tiene docker-compose
instalado encima de docker:latest
. Ver https://hub.docker.com/r/tmaier/docker-compose/
Tu .gitlab-ci.yml
archivo se vería así:
image: tmaier/docker-compose:latest
services:
- docker:dind
before_script:
- docker info
- docker-compose --version
buildJob:
stage: build
tags:
- docker
script:
- docker-compose build