Py学习  »  docker

如何将run<image>参数传递给dockerfile使用?

enhancedJack • 5 年前 • 1769 次点击  

我有一个简单的文档文件:

FROM alpine:3.7
ARG VAR1=initialValue
RUN mkdir $VAR1

ENV VAR2=goodValue
RUN mkdir $VAR2

当我 建造 传递新值的图像,a 新值 已创建文件夹

docker build --build-arg VAR1=newValue -f Dockerfile -t test  .

但是当我试图用 运行 命令,它不起作用:

docker run  -e VAR2=betterValue   test

这个 良好价值 文件夹已创建。(然而,当我 执行程序 容器和列表环境变量var2现在等于bettervalue。)

如何传递要由DockerFile使用的run参数?如果不可能的话,解决办法是什么?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/43563
 
1769 次点击  
文章 [ 3 ]  |  最新文章 5 年前
enhancedJack
Reply   •   1 楼
enhancedJack    6 年前

经过几个小时的搜索…

对于我的例子来说,可能的解决方法是更改dockerfile:

    FROM alpine:3.7

    ENTRYPOINT ["mkdir"]  
    CMD ["goodValue"]

然后在结尾处为cmd提供一个新参数 运行 命令:

docker run test betterValue
grapes
Reply   •   2 楼
grapes    6 年前

当然,因为你很困惑 Docker's build run 阶段。事实上,环境变量工作得很好。

你打电话 docker run -e VAR2=betterValue test 事实上,您可以使用这个值运行容器,但是目录 goodValue 创建于 建造 阶段。

你必须:

呼叫 VAR2=/foo docker build -t test . 你要得到你的 /foo 在生成阶段创建的文件夹。

Adiii
Reply   •   3 楼
Adiii    6 年前

你可以有更好的选择,而不是把这些传递给DOCKER CMD。 我想这就是你想要的,用env创建

FROM alpine:3.7
ARG VAR1=initialValue
RUN mkdir $VAR1

ENV VAR2=goodValue
RUN mkdir $VAR2
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod 777 /usr/local/bin/docker-entrypoint.sh \
    && ln -s /usr/local/bin/docker-entrypoint.sh /
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["/bin/ash"]

在Docker的入口点建立目录

#!/bin/ash
set -e

if [ "$1" = '/bin/ash' ]; then
    echo "container booting..."
    echo "creating directory having name $VAR2"
    mkdir -p $VAR2
fi

exec "$@"

enter image description here