2014-11-26 2 views
3

Я хочу изменить переменную окружения контейнера докера с помощью устройства Vagrant Docker. Как я могу это сделать?Как использовать атрибут env поставщика Vagrant 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 

Это всегда в конечном итоге с порта = 22 вместо 23. Возможный обходной путь с d.create_args = ["-e", "PORT=23"] тоже не получилось.

Источники: Vagrant Docker Docker environment-vars

ответ

1

При определении ENV PORT 22 в вашем Dockerfile, он будет определен как таковой, а не унаследовали от среды сборки. Если вы хотите переопределить его, вы можете сделать это во время запуска контейнера: docker run --rm -it -e PORT=23 <your image> env | grep PORT.

2

Попробуйте изменить d.env часть:

d.env = { 
     "SSH_PORT":"23" 
} 
+0

Это не может быть использована в Provisioner Докер. Его можно использовать только в [Поставщике докеров] (http://docs.vagrantup.com/v2/docker/index.html). Существует огромная разница между этими двумя. – czerasz

Смежные вопросы