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
定义你自己的ENV
variables一样的Dockerfile
。
https://github.com/docker/docker/issues/14634
但现在,您需要在您的Dockerfile
中对您的版本号进行硬编码。
实际上,这并不是一件坏事,因为这意味着你的构build将是可重复的(也就是说,除了你的Dockefile
以外,不会有任何依赖)。