Exécutez le panneau-composition de construire .gitlab-ci.yml
J'ai un .gitlab-ci.yml
fichier qui contient les éléments suivants:
image: docker:latest
services:
- docker:dind
before_script:
- docker info
- docker-compose --version
buildJob:
stage: build
tags:
- docker
script:
- docker-compose build
Mais dans ci-log
je reçois le message:
$ docker-compose --version
/bin/sh: eval: line 46: docker-compose: not found
Ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
MODIFIER j'ai ajouté une autre réponse de fournir un exemple minimal pour un .gitlab-ci.yml configuration soutenir docker-composer.
docker-compose
peut être installé comme un paquet Python, ce qui n'est pas fourni avec votre image. L'image que vous avez choisi n'est pas à même de fournir une installation de Python:À la recherche pour Python donne un résultat vide. Donc, vous avez à choisir une autre image, qui s'adapte à vos besoins et idéalement a docker-composer installé, ou que vous maually créer un.
Le panneau de l'image que vous avez choisi utilise Alpine Linux. Vous pouvez l'utiliser comme base pour votre propre image ou essayez-en un autre en premier si vous n'êtes pas familier avec Alpine Linux.
J'ai eu le même problème et a créé un Dockerfile publique dans un dépôt GitHub et il connecté avec mon Docker Hub compte et a choisi un système automatisé de construire de construire mon image sur chaque push pour le dépôt GitHub. Ensuite, vous pouvez facilement accéder à vos images avec le GitLab CI.
docker-composer maintenant besoin de plus de dev-paquets, qui est décrit dans leur la documentation officielle. C'est le conseillé solution, mais n'a pas vraiment me satisfaire... Trop de paquets pour l'obtenir vers le haut et en cours d'exécution:
Je pense que maintenant il est temps de s'appuyer sur une 3e partie de l'image ou je serais personnellement configurer une nightly build de faire les étapes ci-dessus et de créer automatiquement un message-docker-image dans notre CI pour notre registre.
Personnellement, nous ne suivez pas ce flux de plus, parce que vous perdez le contrôle sur l'exécution des conteneurs et ils pourraient bien finir la course sans fin. C'est à cause de l'docker-en-docker exécuteur testamentaire. Nous avons développé un python script comme une solution de contournement pour tuer tous les vieux conteneurs dans notre IC, qui peuvent être trouvés ici. Mais je ne vous suggérons de commencer contenants de plus de cette façon.
docker-compose down
pour mettre fin à tous les services en cours d'exécution, après votre CI la tâche est accomplie?J'ai créé un simple conteneur docker qui a
docker-compose
installé sur le dessus dedocker:latest
. Voir https://hub.docker.com/r/tmaier/docker-compose/Votre
.gitlab-ci.yml
fichier devrait ressembler à ceci:Docker composer dispose également d'un officiel image:
menu fixe/ecrire
C'est la solution idéale si vous ne voulez pas l'installer chaque pipeline.
Il a actuellement aucun
latest
marque, de sorte que vous aurez à mettre à jour manuellement.Depuis l'image utilise
docker-compose
comme point d'entrée, vous aurez besoin de remplacer le point d'entrée retour à/bin/sh -c
dans votre.gitlab-ci.yml
. Sinon, votre pipeline va échouer avecNo such command: sh
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? ERROR: Job failed: exit code 1
... comment puis-je le résoudre?DOCKER_HOST: tcp://docker:2375/
etDOCKER_DRIVER: overlay2
DOCKER_HOST=tcp://docker:2375
etDOCKER_DRIVER=overlay2
(facultatif) -- pour instruire le panneau de parler avec le démon a commencé à l'intérieur du service (docker:dind
). Reportez-vous à Utiliser docker-en-docker exécuteur pour plus d'informations.Si vous ne voulez pas fournir une coutume docker image avec docker-composer préinstallé, vous pouvez le faire par l'installation de Python pendant la construction. Avec Python installé, vous pouvez enfin installer docker-composer prêt pour la filature de vos conteneurs.
Utilisation docker-composer exec avec -T si vous recevez ce ou une erreur similaire:
Alpine linux dispose maintenant d'un menu fixe-composer paquet dans leur "bord" de la branche, de sorte que vous pouvez l'installer de cette manière .gitlab-ci.yml
docker-compose
jettepkg_resources.DistributionNotFound: The 'docker-compose==1.24.0' distribution was not found and is required by the application