docker - Docker-compose 与 Gitlab CI
问题描述
我想设置与 Gitlab 的持续集成。我的应用程序是通过许多 docker 容器设置的,这些容器使用 docker-compose 组合在一起。我的.gitlab-ci.yml
样子:
image: "docker/compose:1.25.0-rc2-debian"
before_script:
- docker --version
- docker info
- docker-compose build
- ./bin/start-docker
rspec:
script:
- bundle exec rspec
rubocop:
script:
- bundle exec rubocop
当我推送时,它会尝试运行docker-compose build
,这反过来又找不到 docker 守护进程。这并不完全令人惊讶,因为我还没有尝试启动 docker 守护进程。但我通常会这样做systemctl start docker
- 这会失败,因为跑步者不使用 systemd。
如何让 docker-compose 构建?
一些注意事项:docker --version
并docker-compose --version
表明 docker 和 docker-compose 都已正确安装。如果我尝试docker info
,那么我会收到“找不到 docker daemon”错误。
解决方案
image: "docker/compose:1.25.0-rc2-debian"
表示您正在 docker runner 上运行管道。尝试在安装了 docker 和 docker-compose 并运行 docker 守护进程的 shell runner 上运行它。
其他方法是将您的 docker-compose 重写为具有适当依赖关系的 .gitlab-ci.yml 。
推荐阅读
- docker - 连接在 Dockerfile 中被拒绝,但在执行时没有
- ios - 使用 Cocoapods 在模拟器上运行 Xcode 项目
- javascript - 如何等到在 iframe 中绘制 adobe 动画画布?
- r - 如何反转列联表以获取R中的数据
- mongodb - 由于从 Mongo 4.2 升级到 4.4(现在是 4.4.1)无法通过 Mongoose 从 WSL 中的节点连接
- spring - 使用 Spring Websocket STOMP Java 从客户端向服务器发送消息
- terraform - Localstack - AWS API Gateway 使用 Terraform 启用二进制支持
- checkbox - 基于复选框的加减值
- elasticsearch - 锚标记替换模式到标记的末尾
- neo4j - Neo4J 编写密码查询的正确方法