A execução do docker-compose não é suportada no BitBucket?

12

Alvo

O objetivo é executar a docker-compose nos pipelines BitBucket

Tentativa

bitbucket-pipelines.yml

image: docker/compose:1.12.0

pipelines:
  default:
    - step:
        script:
          - docker-compose up --build

Resultado

The Docker Engine version is less than the minimum required by Compose.
Your current project requires a Docker Engine of version 1.13.0 or greater.

Discussão

De acordo com este post, não é suportado?

030
fonte

Respostas:

10

Aqui está a minha solução: (bitbucket-pipelines.yml)

pipelines:
  default:
    - step:
        script:
          - export DOCKER_COMPOSE_VERSION=1.18.0
          - export DOCKER_COMPOSE_URL=https://github.com/docker/compose/releases/download/${DOCKER_COMPOSE_VERSION}/docker-compose-$(uname -s)-$(uname -m)
          - curl -L $DOCKER_COMPOSE_URL > docker-compose
          - chmod +x docker-compose
          - mv docker-compose /usr/local/bin
          - docker-compose build --force-rm --no-cache --pull
Maksim Kostromin
fonte
6

É menos provável que vejamos suporte à integração nativa de docker-compose porque a API de pipelines é uma implementação personalizada de funcionalidade semelhante e também devido a possíveis problemas de segurança, mas parece que há mais recursos em desenvolvimento no momento para implementar mais recursos do tipo docker-compose no esta questão em aberto.

UPDATE: suporte adicionado para pipelines de vários contêineres, conforme descrito na documentação

rombob
fonte
3

Consegui usar o docker-compose para enviar imagens para um host remoto usando a imagem a seguir.

tmaier / docker-compose: mais recente

Esta é a imagem básica do docker com o docker-compose instalado.

Minha bitbucket-pipelines.ymlaparência é assim:

- step:
    image: tmaier/docker-compose:latest
    script:
        - (umask  077 ; echo $DOCKER_PRIVATE_KEY | base64 -d > ./keys/key.pem)
        - export DOCKER_CERT_PATH=./keys/
        - export DOCKER_TLS_VERIFY="1"
        - export DOCKER_HOST=tcp://<DOCKER_HOST_IP>:2376
        - docker login --username $DOCKER_HUB_USERNAME --password $DOCKER_HUB_PASSWORD
        - docker-compose up -d <service>

Fiz o check-in no meu repositório ca.peme é cert.pemnecessário para o docker-compose no keysdiretório A chave privada é salva codificada em base64, como uma variável segura nas variáveis ​​de ambiente dos pipelines Bitbucket, então eu apenas a decodifico e colo keys/key.pemno pipeline como a primeira etapa.

Lembre-se de que eu usei docker logindepois de definir as variáveis ​​de ambiente para o host remoto.

Nikos Anestos
fonte
0

bitbucket-pipelines.yml

image: python:3.8.1

pipelines:
  branches:
    "**":
      - step:
          name: Build
          services:
            - docker
          caches:
            - docker
            - pip
          script:
            - pip install docker-compose
            - docker network create dockernet
            - docker-compose build

definitions:
  services:
    docker:
      memory: 2048
Codler
fonte