如何使用Vagrant Docker提供程序的env属性?
我想用Vagrant Dockerconfiguration器更改Docker容器的环境variables。 我怎样才能做到这一点?
示例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环境variables
当您在Dockerfile
定义ENV PORT 22
时,它将被定义为这样,而不是从构build环境inheritance。 如果你想覆盖它,你可以在运行容器的时候这样做: docker run --rm -it -e PORT=23 <your image> env | grep PORT
docker run --rm -it -e PORT=23 <your image> env | grep PORT
。
尝试改变d.env
部分:
d.env = { "SSH_PORT":"23" }