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

How do I pass a command line argument to a service container?

我正在尝试设置一个使用 docker 容器提供的数据库服务的 bitbucket 管道。但是,为了正确启动数据库服务,我需要传递一个参数以供数据库容器的 ENTRYPOINT 接收。我从 pipeline service doc 中看到可以将 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 介绍,目前有 no way to pass command line arguments to service containers. However, he has created a feature request 此功能,如果您有兴趣,欢迎投票。

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

  1. You can start the service container by running a Docker command within Pipelines as long as the command is not restricted. You can check this link for more information about Docker restricted commands on Pipelines.
  2. You can create your own Docker image (using Dockerfile) and upload it to Docker Hub then use that image as a service container on Pipelines