docker - 如何通过运行传递参数以供 Dockerfile 使用?
问题描述
我有这个简单的 Dockefile:
FROM alpine:3.7
ARG VAR1=initialValue
RUN mkdir $VAR1
ENV VAR2=goodValue
RUN mkdir $VAR2
当我构建传递新值的图像时,会创建一个newValue文件夹
docker build --build-arg VAR1=newValue -f Dockerfile -t test .
但是当我尝试使用运行命令更改 VAR2 的值时,它不起作用:
docker run -e VAR2=betterValue test
goodValue文件夹已创建。(但是,当我执行容器并列出环境变量时,VAR2 现在等于 betterValue。)
如何通过运行传递参数以供 Dockerfile 使用?如果不可能,有什么解决方法?
解决方案
我认为您可以有一个更好的选择,而不是将这些传递给 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 "$@"
推荐阅读
- javascript - React:URL更改但组件未呈现
- kotlin - 为什么我在 Kotlin 中使用暴露时会收到错误消息?
- c# - C# 复杂 Json 反序列化
- c# - What's the best way to sort about 2.5 million records in memory in c#?
- macos - 自定义文本视图的自动布局支持
- python - Reading an Excel spreadsheet of Regular expressions
- java - @PersistentContext:有人可以解释那个注释吗?
- r - 如何在 Excel 或 R 中将一列的数据拆分为多个相等的 n 列?
- python - 将 paho.mqtt.python 连接到 mosquitto 代理时出现套接字错误
- python - {Class}.query.all() 请求未从表中检索所有数据的 Flask-SQLAlchemy 问题