L'exécution de docker-compose n'est-elle pas prise en charge dans BitBucket?

12

Objectif

L'objectif est d'exécuter docker-compose dans les pipelines BitBucket

Tentative

bitbucket-pipelines.yml

image: docker/compose:1.12.0

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

Résultat

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.

Discussion

Selon ce post, il n'est pas pris en charge?

030
la source

Réponses:

10

Voici ma solution: (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
la source
6

Nous sommes moins susceptibles de voir la prise en charge de l'intégration native de composition de docker car l'API de pipelines est une implémentation personnalisée de fonctionnalités similaires, et également en raison de problèmes de sécurité possibles, mais il semble que davantage de fonctionnalités sont actuellement en développement pour implémenter davantage de fonctionnalités de type docker dans cette question ouverte.

MISE À JOUR: ajout de la prise en charge des pipelines multi-conteneurs, comme décrit dans la documentation

rombob
la source
3

J'ai réussi à utiliser docker-compose pour envoyer des images vers un hôte distant en utilisant l'image suivante.

tmaier / docker-compose: dernier

Il s'agit de l' image docker de base avec docker-compose installé.

Mon bitbucket-pipelines.ymlressemble à ceci:

- 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>

J'ai enregistré mon référentiel ca.pemet cert.pemrequis par docker-compose dans le keysrépertoire. La clé privée est enregistrée en base64encodée, en tant que variable sécurisée dans les variables d'environnement des pipelines Bitbucket, donc je viens de la décoder et de la coller keys/key.pemdans le pipeline comme première étape.

Gardez à l'esprit que j'ai utilisé docker loginaprès avoir défini les variables d'environnement pour l'hôte distant.

Nikos Anestos
la source
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
la source