【发布时间】:2015-11-03 13:03:22
【问题描述】:
我正在使用 Vagrant 和 Docker 创建开发环境,但我遇到了一些问题。 我有一个 config.yaml 文件,其中定义了几个变量,其中一个是“drush_version”。
然后在我的 Vagrantfile 中,我会这样做:
.....
web.vm.provider "docker" do |d|
d.build_dir = "./docker/php/#{php_version}/#{web_server}"
d.create_args = ["--env", "DRUSH_VERSION=#{drush_version}"]
.....
最后在被调用的 Dockerfile 中,我有:
.....
# Installation of drush
RUN git clone https://github.com/drush-ops/drush.git /usr/local/src/drush
RUN cd /usr/local/src/drush && git checkout $DRUSH_VERSION
RUN ln -s /usr/local/src/drush/drush /usr/bin/drush
RUN cd /usr/local/src/drush && composer update && composer install
.....
我希望 drush 可以安装所选版本,但不幸的是它不起作用... 问题是在构建容器时,$DRUSH_VERSION 变量始终为空。
但是docker容器启动后,如果我在容器中运行“echo $DRUSH_VERSION”,可以看到变量定义很好。
如果我在我的 Dockerfile 顶部添加“ENV DRUSH_VERSION 8.0.0-rc2”,它会起作用,但我想在我的 config.yaml 文件中设置它。
我认为问题是我需要在“docker build”期间传递这个变量,而不是“docker run”,但我真的不知道该怎么做......
如何将变量从 Vagrant 传递给“docker build”? 有人能指出我正确的方向吗?
非常感谢
【问题讨论】:
标签: docker vagrant vagrantfile dockerfile