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

标签 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

最佳答案

当您定义 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/

相关文章:

ubuntu - 无法在 Ubuntu 中启动 Docker

python - Ubuntu 环境变量 - Anaconda Jupyter

python - 即使退出后,环境变量也会保留在 Python 脚本中

python - 如何从子进程中获取环境?

windows-7 - VM 已变为 'inaccessible' - Vagrant 不再工作

ubuntu - 在 Chef 中创建厨房时出错

objective-c - $PATH 与 Console 和 Cocoa 不同吗?

ubuntu - 如何改进 vagrant 中的慢速共享文件夹

python - 如何在不使用manage.py createsuperuser命令的情况下以编程方式在docker中为django创建 super 用户?

docker - 如何在不检查或启动任何依赖项的情况下在 docker-compose 中启动一项服务?