Saltar al contenido

Ejecute la compilación de docker-compose en .gitlab-ci.yml

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á con No 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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *