【问题标题】:How to pass --build-arg parameters from command line to docker-compose.yml file?如何将 --build-arg 参数从命令行传递到 docker-compose.yml 文件?
【发布时间】:2020-03-03 03:42:23
【问题描述】:

假设我键入以下命令

docker-compose -f docker-compose.yml build --build_args PARAM=1

我应该如何编写我的 docker-compose.yml 以使 yml 字段获得参数PARAM,其值为1

我的 yml 文件在下面。

version: '3.7'

services:
  web:
    build:
      context: .
      dockerfile: ./Dockerfile
      args: 
         - MY_PARAM: ${PARAM}
      ports:
         - "5000:5000"
    image: sample-img:1.0

我加了

args: 
   - MY_PARAM: ${PARAM}

低于build。这是正确的吗?

【问题讨论】:

    标签: docker docker-compose arguments parameter-passing


    【解决方案1】:

    这是在使用 compose 时如何传递构建参数的方法 -

    1. 在 Dockerfile 中允许参数支持。

      FROM foo:bar   
      ARG PARAM
      ARG PARAM2
      .................
      
    2. 现在您可以通过两种不同的方式传递这些参数 -

      1. 在运行时 -

        docker-compose -f docker-compose.yml build --build-arg "PARAM=1 PARAM2=2"
        
      2. 在 compose 中使用 shell -

        $ export PARAM=1 PARAM2=2
        

        如下更改 docker compose -

        dockerfile: ./Dockerfile.foo
        args:
          PARAM: ${PARAM}
          PARAM2: ${PARAM2}
        

        构建它 -

        $ docker-compose -f docker-compose.yml build
        

    【讨论】:

    • 您好,感谢您的帮助!我真正想要的是访问docker-compose.yml 中的参数值。例如,给定您上面编写的代码,此命令在 docker-compose.yml 中有效吗? image: my-iamge:${PARAM}
    • 是的,第二个解决方案“在 compose 中使用 shell”应该可以工作。如果您在 shell 中导出变量,compose 将能够对其进行插值。
    猜你喜欢
    • 2019-12-30
    • 2017-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-02-08
    • 1970-01-01
    • 2020-10-09
    • 2011-09-28
    • 2014-09-22
    相关资源
    最近更新 更多