我想使用 Vagrant Docker 配置器更改 docker 容器的环境变量。我怎样才能做到这一点?
示例 Vagrantfile:
config.vm.define 'container' do |ws|
ws.vm.hostname = 'container'
ws.ssh.port = 23
ws.ssh.guest_port = 23
ws.vm.provider "docker" do |d|
d.image = "name/image"
d.env = {
"SSH_PORT" => 23
}
d.vagrant_machine = "host"
d.vagrant_vagrantfile = "../Vagrantfile"
d.force_host_vm = true
d.has_ssh = true
end
end
示例 Dockerfile:
FROM centos:centos7
ENV PORT 22
#...
RUN echo "Port $PORT" >> /somefile.txt
#...
EXPOSE $PORT
它总是以 PORT=22 而不是 23 结束。
一个可能的解决方法
d.create_args = ["-e", "PORT=23"]
也失败了。资料来源:
Vagrant Docker
Docker environment-vars
最佳答案
当您定义 ENV PORT 22
在您的 Dockerfile
,它将被定义为这样,而不是从构建环境继承。如果你想覆盖它,你可以在运行容器时这样做:docker run --rm -it -e PORT=23 <your image> env | grep PORT
.
关于environment-variables - 如何使用 Vagrant Docker 提供程序的 env 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27153663/