我有一个 .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
我做错了什么?
最佳答案
Docker 还提供了一个官方镜像:docker/compose
如果您不想在每条管道上都安装它,这是理想的解决方案。
请注意,在最新版本的 GitLab CI/Docker 中,您可能需要授予对 GitLab CI Runner 的特权访问权限并配置/禁用 TLS。见 Use docker-in-docker workflow with Docker executor
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
# Official docker compose image.
image:
name: docker/compose:latest
services:
- docker:dind
before_script:
- docker version
- docker-compose version
build:
stage: build
script:
- docker-compose down
- docker-compose build
- docker-compose up tester-image
请注意,在 docker-compose
earlier than 1.25 的版本中:
Since the image uses
docker-compose-entrypoint.sh
as entrypoint you'll need to override it back to/bin/sh -c
in your.gitlab-ci.yml
. Otherwise your pipeline will fail withNo such command: sh
image:
name: docker/compose:latest
entrypoint: ["/bin/sh", "-c"]
关于docker - 在 .gitlab-ci.yml 中运行 docker-compose build,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868369/