【问题标题】:Docker Run and variable substitutionDocker 运行和变量替换
【发布时间】:2016-06-03 23:17:57
【问题描述】:

我在名为image_name的脚本中有一个变量

image_name="my-app"

我正在尝试将此变量传递给 docker 容器,如下所示:

docker build -t $image_name .
docker run --rm --name $image_name -e "app_dir=${image_name}" $image_name

但是这个变量没有设置,在 docker build 的上下文中是空白的

这是来自以下 Dockerfile 的 sn-p:

....

RUN     echo dir is $app_dir

....

这是下面构建输出的 sn-p:

....

Step 2 : RUN echo dir is $app_dir
---> Running in db93a939d701
dir is
---> c9f5e2a657d5
Removing intermediate container db93a939d701

....

有人知道如何进行变量替换吗?

【问题讨论】:

    标签: bash docker environment-variables


    【解决方案1】:

    这可以使用docker build 命令的build-arg 参数来实现

    例如,请参阅:https://github.com/docker/docker/issues/6822#issuecomment-168170031

    【讨论】:

    【解决方案2】:

    请注意,您正在使用 Dockerfile 中的变量。该变量将在构建时评估(docker build),因此您需要在那个时候传递它的值。这可以通过--build-arg 参数来实现。

    改变你的例子,它会是:

    docker build --build-arg app_dir=${image_name} -t $image_name .
    docker run --rm --name $image_name $image_name
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-04-11
      • 2010-12-19
      • 2021-08-27
      • 2021-01-03
      • 2022-06-24
      • 1970-01-01
      • 2012-07-23
      相关资源
      最近更新 更多