社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

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

enhancedJack • 5 年前 • 1758 次点击  

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

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
 
1758 次点击  
文章 [ 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