stream浪者envvariables到Docker构build

我正在使用Vagrant和Docker来创build开发环境,但我坚持一些东西。 我有一个config.yaml文件,定义了几个variables,其中一个是“drush_version”。

然后在我的stream浪文件中,我这样做:

..... 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 ..... 

我期待着用select的版本安装drush,但不幸的是它不工作…事情是当容器被build立时,$ DRUSH_VERSIONvariables总是空的。

但是在Docker容器启动后,如果我在容器中运行“echo $ DRUSH_VERSION”,我可以看到这个variables已经定义好了。

如果我在Dockerfile的顶部添加“ENV DRUSH_VERSION 8.0.0-rc2”,它会起作用,但是我想将其设置在我的config.yaml文件中。

我认为问题是我需要在“docker构build”期间传递此variables,而不是“docker运行”,但我真的不知道该怎么做…

我怎样才能将stream浪汉的variables传递给“docker build”? 有人能指出我正确的方向吗?

非常感谢

不幸的是,目前这是不可行的。

在1.9.0的里程碑中有一个特性,可以让你将构buildvariables传递给docker build ,但是这有效地给了你和在你的Dockerfile定义你自己的ENVvariables一样的Dockerfile

https://github.com/docker/docker/issues/14634

但现在,您需要在您的Dockerfile中对您的版本号进行硬编码。

实际上,这并不是一件坏事,因为这意味着你的构build将是可重复的(也就是说,除了你的Dockefile以外,不会有任何依赖)。