docker - 在 .gitlab-ci.yml 中运行 docker-compose build

标签 docker docker-compose gitlab-ci

我有一个 .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 with No 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/

相关文章:

gitlab - 使用 Gitlab 注册表中的私有(private) Docker 镜像作为 CI 的基础镜像

angular - Docker-nginx angular — 403禁止错误

docker - 502 Bad Gateway nginx/1.13.12 on localhost 同时在同上创建新策略

docker - Gitlab CI 中使用 Docker 运行器的代理问题

java - 如何配置spring拦截器以在每个请求中调用

docker - LogStash 无法从许可证中检索许可证信息。响应代码 '401' 通过 URL 'http://elasticsearch:9200/_xpack' 联系 Elasticsearch

GitLab CI 构建仍在等待中

docker - 在容器中运行服务(upstart/init.d)

linux - 如何让调试符号在 Docker 容器内的 linux perf 工具中工作?

docker-compose - Docker 撰写错误 : build contains unsupported option: 'shm_size'