我有一个.gitlab-ci.yml
文件,其中包含以下内容:
image: docker:latest
services:
- docker:dind
before_script:
- docker info
- docker-compose --version
buildJob:
stage: build
tags:
- docker
script:
- docker-compose build
但在ci-log
中,我收到消息:
$ docker-compose --version
/bin/sh: eval: line 46: docker-compose: not found
我哪里做错了?
9条答案
按热度按时间nc1teljy1#
Docker还提供了一张 * 官方 * 图片:
docker/compose
如果您不想在每条管道上都安装它,这是理想的解决方案。
请注意,在最新版本的GitLab CI/Docker中,您可能需要为GitLab CI Runner给予特权访问权限,并配置/禁用TLS。
请注意,在1.25**之前的
docker-compose
**版本中:由于映像使用
docker-compose-entrypoint.sh
作为入口点,您需要在.gitlab-ci.yml
中将其 * 覆盖 * 回/bin/sh -c
。否则,您的管道将因No such command: sh
而失败dluptydi2#
以下是正式文件:
示例停靠器-composite.yml:
我们个人不再遵循这个流程,因为您对正在运行的容器失去控制,它们可能会无休止地运行。这是因为docker-in-docker执行器。我们开发了一个python脚本作为一个解决方案,以删除CI中的所有旧容器,即can be found here。但我不建议再像这样启动容器。
7fhtutme3#
我创建了一个简单的Docker容器,它将
docker-compose
安装在docker:latest
之上。您的
.gitlab-ci.yml
文件如下所示:q8l4jmvw4#
EDIT我添加了另一个答案,提供了一个支持docker-compose的.gitlab-ci.yml配置的最小示例。
docker-compose
可以作为Python包安装,它不随您的映像一起提供。您选择的映像甚至不提供Python的安装:查找Python会得到一个空的结果,所以你必须选择一个不同的映像,它适合你的需要,并且最好安装了docker-compose或者你自己创建一个。
您选择的Docker映像使用Alpine Linux。您可以将其用作自己映像的基础,如果您不熟悉Alpine Linux,也可以先尝试其他映像。
我也遇到了同样的问题,我在一个公共GitHub仓库中创建了一个Dockerfile,并将其与我的Docker Hub账户连接,选择了自动构建,在每次推送到GitHub仓库时构建我的图像。
euoag5mw5#
如果你不想提供一个预装了docker-compose的自定义docker映像,你可以在构建时安装Python来让它工作,安装Python之后,你就可以安装docker-compose来启动你的容器。
如果收到以下错误或类似错误,请将docker-compose exec与**-T**配合使用:
np8igboo6#
我认为上面的大部分都是有帮助的,但是我需要集体应用它们来解决这个问题,下面是为我工作的脚本
希望你也能成功
还请注意,在您的docker compose中,这是您必须为图像名称提供的格式
<registry base url>/<username>/<repo name>/<image name>:<tag>
5ssjco0h7#
tiangolo/docker-with-compose
的作用是:mxg2im7a8#
我确实花了一些时间才让它与Gitlab.com共享跑步者一起工作。
我想说“使用
docker/compose:latest
,就是这样”,但不幸的是,我无法使它工作,我得到Cannot connect to the Docker daemon at tcp://docker:2375/. Is the docker daemon running?
错误,即使所有的env变量设置。我也不喜欢通过pip安装
docker-compose
时安装五千个依赖项的选项。幸运的是,对于最近的Alpine版本(3.10+),Alpine仓库中有docker-compose包,这意味着@n2o的answer可以简化为:
这在我第一次尝试时就非常有效。也许其他答案没有成功的原因是在Gitlab.com共享跑步者的某些配置中,我不知道...
0vvn1miw9#
Alpine linux现在在他们的“edge”分支中有一个docker-compose包,所以你可以用这种方式在.gitlab-ci.yml中安装它