2015-11-03 60 views
0

我使用Vagrant和Docker來創建開發環境,但是我遇到了一些問題。 我有一個config.yaml文件,其中包含一個變量「drush_version」。Vagrant env變量到Docker構建

然後在我的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文件中。

我認爲這個問題是我需要的「泊塢窗構建」期間,通過這個變量,而不是「泊塢窗跑」,但我真的不知道該怎麼辦呢?

哪有我將Vagrant的變量傳遞給「docker build」? 有人能指引我正確的方向嗎?

非常感謝

回答

1

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

有一個在1.9.0里程碑,它將允許你通過建立變量爲docker build功能,但這種有效的給你一樣,那麼在您Dockerfile定義自己的ENV變量。

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

不過現在,你需要硬代碼版本號在你的Dockerfile

實際上,這並不是一件壞事,因爲這意味着您的構建將是可重複的(即,除了您的Dockefile以外,不會有任何依賴關係)。

+0

非常感謝您的回答!我花了這麼多時間試圖做到這一點...... – TehesFR

+0

編輯:1.9.0已經發布今天上午,我會嘗試新的ARG指令:https://github.com/docker/docker/releases/tag/ v1.9.0 – TehesFR