我想创建能够构建三个不同图像的Dockerfile(目前只有一个)。这些图像仅在配置文件中有所不同。
我在尝试:
我必须说我没有想法:/你如何处理这种情况。在我看来,这应该是一个普遍的问题。
答案 0 :(得分:5)
为什么不在Dockerfile中复制所有3个配置文件,然后复制docker run -e config=file1
(或file2或file3)并使用config环境变量的值来获取所需的配置文件。检查doc
http://docs.docker.com/reference/commandline/cli/#run
您还可以使用--env-file=[] Read in a line delimited file of environment variables
命令的docker run
。
您可以使用docker run -it -e mytag=abc123 ubuntu:latest env | grep mytag
显示mytag=abc123
答案 1 :(得分:0)
如果您想要3个不同的图像,请使用3个不同的Dockerfiles。命名问题很烦人,但您可以编写一个帮助脚本,只需复制文件和调用docker build
,例如。
cp Dockerfile-cfg1 Dockerfile
docker build -t "cfg1" .
cp Dockerfile-cfg2 Dockerfile
docker build -t "cfg2" .
然而,正如@ user2915097建议的那样,更好的解决方案可能是拥有一个映像并在运行时选择配置。这意味着更少的照顾和维护多个图像的开销。
答案 2 :(得分:0)
我添加了三个不同的文件:
test.Dockerfile
dev.Dockerfile
prod.Dockerfile
我已经使用文件名运行了它们:
docker build -t name/name -f test.Dockerfile .
docker build -t name/name -f dev.Dockerfile .
docker build -t name/name -f prod.Dockerfile .