Docker运行和变量替换

时间:2016-02-22 13:41:15

标签: bash docker environment-variables

我在名为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的片段:

....

RUN     echo dir is $app_dir

....

这是以下构建输出的片段:

....

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

....

任何人都知道如何进行变量替换?

2 个答案:

答案 0 :(得分:1)

使用build-arg命令

docker build参数可以实现这一点

请参阅:https://github.com/docker/docker/issues/6822#issuecomment-168170031以获取示例

答案 1 :(得分:1)

请注意,您正在使用docker build中的变量。该变量将在构建时(--build-arg)进行评估,因此您需要在此时传递其值。这可以通过docker build --build-arg app_dir=${image_name} -t $image_name . docker run --rm --name $image_name $image_name param来实现。

更改您的示例,它将是:

{{1}}