如何将命令行参数传递给服务容器?

问题描述 投票:0回答:2

我正在尝试设置一个使用 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
bitbucket-pipelines
2个回答
1
投票

根据 Atlassian 的 Mark C 的说法,目前无法将命令行参数传递给服务容器。不过,他为此功能创建了一个功能请求,如果您感兴趣,欢迎投票。

同时,建议的解决方法是:

  1. 您可以通过在 Pipelines 中运行 Docker 命令来启动服务容器,只要该命令不受限制。 您可以检查此链接以获取有关管道上 Docker 限制命令的更多信息。
  2. 您可以创建自己的 Docker 镜像(使用 Dockerfile)并将其上传到 Docker Hub,然后将该镜像用作 Pipelines 上的服务容器

0
投票

这对我有用:

  default:
    - step:
        script:
          - ...
          - docker run -d --rm -p 27017:27017 mongo:latest mongod --replSet rs0 --bind_ip_all
          - ...
        services:
          - ...
          - docker
          - ...
© www.soinside.com 2019 - 2024. All rights reserved.