docker运行和variablesreplace

我有一个名为image_name的脚本中的variables

 image_name="my-app" 

我试图把这个variables传递给一个docker容器,如下所示:

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

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

这是下面的Dockerfile的一个片段:

 .... RUN echo dir is $app_dir .... 

这是下面的构build输出的一个片段:

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

任何人都知道如何做variables替代?

请注意,您正在使用Dockerfile的variables。 该variables将在构build时进行评估( docker build ),因此您需要在此时传递其值。 这可以通过--build-arg参数来实现。

改变你的例子,这将是:

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

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

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