在Docker Build时怎么给容器内部即传参给容器内部,不是docker

在Docker Build时怎么给容器内部即传参给容器内部,不是docker,比如我Docker有个环境变量,这个没有设置,在编译的时候根据传参不同,执行不同的操作来生成我指定的镜像,不要每个不同版本都写一遍配置。

阅读 7k
3 个回答

Dockerfile內寫ARG, 然後 docker build --build-arg

Docker 镜像是作为一个通用的镜像存在的,所有的环境变量等的设置都应该通过 run 的时候指定参数来实现。你想使用不同的配置可以用 docker compose ,而不是为不同的配置生成不同的镜像

推荐用 frep ( https://github.com/subchen/frep ) 调用模版文件来生成不同的 Dockerfile,然后分别进行 build

比如:Dockerfile.tmpl

FROM {{ .BASEIMAGE }}

CMD [/bin/bash]

然后用

frep Dockerfile.tmpl:Dockerfile.centos -e BASEIMAGE=centos
docker build -f Dockerfile.centos

frep Dockerfile.tmpl:Dockerfile.ubuntu -e BASEIMAGE=ubuntu
docker build -f Dockerfile.ubuntu
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题