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?

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

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


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.


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.