如何使用Vagrant Docker提供程序的env属性?

时间:2014-11-26 16:03:17

标签: environment-variables vagrant docker

我想用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

2 个答案:

答案 0 :(得分:2)

尝试更改Int64部分:

d.env

答案 1 :(得分:1)

ENV PORT 22中定义Dockerfile时,它将被定义为此类,而不是从构建环境继承。如果您希望覆盖它,可以在运行容器时执行此操作:docker run --rm -it -e PORT=23 <your image> env | grep PORT