【问题标题】:Pass argument to docker compose将参数传递给 docker compose
【发布时间】:2017-04-21 13:42:08
【问题描述】:

在我的 docker compose 文件中有一个我想在运行期间生成的动态字段。其实它是一个字符串模板:

environment:
    - SERVER_URL:https://0.0.0.0:${PORT}

我想动态配置这个PORT参数

docker-compose run <service> PORT=443

documentation 中有ARGS 参数集,我想我可以使用。但是没有信息如何使用撰写文件中的那些

【问题讨论】:

标签: docker docker-compose


【解决方案1】:

在 docker-compose 中,参数仅在 dockerfile 中可用且有用。您可以指定您在前面的级别中执行的操作,如下所示:

#dockerfile
ARG PORT
ENV SERVER_URL "https://0.0.0.0:$PORT"

您的端口可以在您的 docker-compose.yml 中设置:

build:
  context: .
  args:
    - PORT=443

在任何情况下它实际上都是一个环境变量。如果适合您,您可以通过运行命令传递它:

PORT=443 docker-compose run <service>
#or
docker-compose run <service> -e PORT=443

【讨论】:

  • 这太糟糕了,我希望能够下载一个预构建的容器并使用我选择的任何运行时参数运行它。能够在 docker-compose 中列出它们应该是基本功能。我将覆盖入口点。
  • @Dagrooms 我认为这可以通过堆栈部署实现。看我的回答。
  • 这对我有用,我不必碰我的 Dockerfile。我使用PORT=443 docker-compose ... -f bla.yml 传递端口,然后在我的YAML 文件中,command: bash -c "echo $PORT" 行成功显示443。
【解决方案2】:

使用docker-compose build时可以使用flag

docker-compose build --build-arg PRODUCTION=VALUE

在 Dockerfile 中你可以得到参数 PRODUCTION

# Dockerfile
ARG PRODUCTION
FROM node:latest

【讨论】:

  • 不完全是最初的要求,但你在构建阶段帮助了我很多。
【解决方案3】:

docker stack deploy 可以做到这一点

环境部分中的示例撰写文件:

- MY_VARIABLE_NAME=${MY_VARIABLE_VALUE}

堆栈部署命令(我在 Windows 中从 Gitbash 运行此命令):

MY_VARIABLE_VALUE=some-value docker stack deploy --compose-file compose_file_here stackname

参考 请参阅此 Github 帖子here

【讨论】:

    【解决方案4】:

    这可以通过 docker-compose 和 Dockerfile 中的 ARGS 来实现。

    要解决的问题:

    • 将更改从 Git Respository 拉取到 Automate App Deploy

    Dockerfile

    RUN 
    ARG CACHEBUST=1 # This will setup a arg called CACHEBUST
    RUN  git clone
    

    运行下面的 bash 命令来构建和运行。 SETTING --build-arg CACHEBUST= 随机 md5sum 哈希,使 Docker-Compose 重建图像,以 ARGS 开头的行等等。

    docker-compose -f dockerprd.yml build  --build-arg CACHEBUST=$(echo $RANDOM | md5sum | head -c 20; echo;) && docker-compose -f dockerprd.yml up -d
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-31
      • 1970-01-01
      • 2021-07-11
      • 1970-01-01
      相关资源
      最近更新 更多