我正在尝试设置一个使用 docker 容器提供的数据库服务的 bitbucket 管道。但是,为了正确启动数据库服务,我需要传递一个参数以供数据库容器的 ENTRYPOINT 接收。我从 pipeline 服务文档中看到,可以将
variables
发送到服务的 docker 容器,但我需要设置的选项不能通过环境变量设置,只能通过命令行参数设置。
当我使用
docker run
在本地运行数据库的 docker 映像时,我只需将其添加到 docker run
命令的末尾即可设置该选项,并且它会正确应用于容器的 ENTRYPOINT,所以看起来像这样应该很简单,我只是不知道将参数放在 bitbucket-pipelines.yml 中的哪里。
下面是我的 bitbucket-pipelines.yml。除了我需要一种将命令行参数传递到文件末尾的 victoria-metrics 容器之外,它的一切都很好。
image: node:14.16.1
pipelines:
default:
- step:
caches:
- node
script:
- npm install
- npm test
services:
- mongo
- victoriaMetrics
definitions:
services:
mongo:
image: mongo:3.6
victoriaMetrics:
image: victoriametrics/victoria-metrics:v1.75.1
根据 Atlassian 的 Mark C 的说法,目前无法将命令行参数传递给服务容器。不过,他为此功能创建了一个功能请求,如果您感兴趣,欢迎投票。
同时,建议的解决方法是:
- 您可以通过在 Pipelines 中运行 Docker 命令来启动服务容器,只要该命令不受限制。 您可以检查此链接以获取有关管道上 Docker 限制命令的更多信息。
- 您可以创建自己的 Docker 镜像(使用 Dockerfile)并将其上传到 Docker Hub,然后将该镜像用作 Pipelines 上的服务容器
这对我有用:
default:
- step:
script:
- ...
- docker run -d --rm -p 27017:27017 mongo:latest mongod --replSet rs0 --bind_ip_all
- ...
services:
- ...
- docker
- ...