Docker运行和变量替换

Abi*_*oso 5 bash environment-variables docker

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

image_name="my-app"
Run Code Online (Sandbox Code Playgroud)

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

docker build -t $image_name .
docker run --rm --name $image_name -e "app_dir=${image_name}" $image_name
Run Code Online (Sandbox Code Playgroud)

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

这是以下Dockerfile的片段:

....

RUN     echo dir is $app_dir

....
Run Code Online (Sandbox Code Playgroud)

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

....

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

....
Run Code Online (Sandbox Code Playgroud)

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

Luí*_*hin 3

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

改变你的例子,它将是:

docker build --build-arg app_dir=${image_name} -t $image_name .
docker run --rm --name $image_name $image_name
Run Code Online (Sandbox Code Playgroud)