docker - Gitlab CI runner 在 docker-compose 构建时失败
问题描述
我的想法是拥有一个 docker-compose 文件,我可以--profile db_as_container
根据我想要拥有云数据库(MongoDB atlas)还是本地数据库作为容器来配置它。
这是我的 docker-compose.yml:
version: '3'
services:
app:
image: '${APP_NAME}:${TAG:-latest}'
build: .
ports:
- '${PORT}:${PORT}'
mongo_db:
image: mongo
container_name: mongo_db_container
ports:
- "27017:27017"
profiles:
- db_as_container
我的 docker compose up shell 脚本(dc-up.sh)推断我的 DB_CONNECTION_STRING 是云类型还是本地容器类型,并调用适当的 up 命令。
TAG=${TAG} docker-compose --profile db_as_container up -d --build
对比
TAG=${TAG} docker-compose up -d --build
这在本地有效,并且不会抱怨使用配置文件。
问题是当我的Gitlab CI运行器运行我的构建脚本(build-and-push.sh)时:
TAG=${TAG} docker-compose build
它会产生此错误:
Compose 文件“./docker-compose.yml”无效,因为:services.mongo_db 的配置选项不受支持:“profiles”
我在这里做错了什么?
解决方案
实际上问题不是撰写文件规范的版本,而是我在这里发现的 docker-compose 本身
在 docker-compose 1.28 版中添加了对服务配置文件的支持
从 1.262 更新到1.28.6解决了我的问题。
推荐阅读
- ios - 在 iOS 13.1 beta 上收到 Voip 推送通知时,活动电话会终止
- python - 如何在 pandas 数据框中跳过“Nan”值以及如何在每个图上显示带有 rsquared 的回归线
- excel - 如何在VBA中用变量行填充一列公式
- flex-lexer - “%option nodefault” 导致“flex 扫描仪卡住”
- python - 在 Python 中实现一个案例来执行特定的命令
- python - Python从列表列表中创建列表列表
- azure - Azure Func 或 Logic App 中的 OleDB 或 ODBC
- javascript - 来自具有嵌套条件的 JSON 数据的角度动态表单视图
- python - Tesseract:大写字符的问题
- django - django - 如何将上传的文件保存到指定名称的特定文件夹