Vagrant 环境变量到 Docker 构建
Vagrant env variable to Docker build
我正在使用 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}"]
.....
最后在调用的 Docker 文件中,我有:
.....
# 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",可以看到变量定义好了
如果我在 Docker 文件的顶部添加 "ENV DRUSH_VERSION 8.0.0-rc2",它会起作用,但我想在我的 config.yaml 文件中设置它。
我认为问题是我需要在 "docker build" 期间传递此变量,而不是 "docker run" 但我真的不知道该怎么做...
如何将变量从 Vagrant 传递给 "docker build"?
有人能给我指出正确的方向吗?
非常感谢
不幸的是,目前这是不可行的。
1.9.0 里程碑中有一项功能允许您将构建变量传递给 docker build
,但这实际上与在您的文件中定义自己的 ENV
变量一样有效Dockerfile
.
https://github.com/docker/docker/issues/14634
虽然现在,您需要在 Dockerfile
中硬编码您的版本号。
实际上,这并不是一件坏事,因为这意味着您的构建将是可重复的(即,不会依赖于您 Dockefile
以外的任何东西)。
我正在使用 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}"]
.....
最后在调用的 Docker 文件中,我有:
.....
# 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",可以看到变量定义好了
如果我在 Docker 文件的顶部添加 "ENV DRUSH_VERSION 8.0.0-rc2",它会起作用,但我想在我的 config.yaml 文件中设置它。
我认为问题是我需要在 "docker build" 期间传递此变量,而不是 "docker run" 但我真的不知道该怎么做...
如何将变量从 Vagrant 传递给 "docker build"? 有人能给我指出正确的方向吗?
非常感谢
不幸的是,目前这是不可行的。
1.9.0 里程碑中有一项功能允许您将构建变量传递给 docker build
,但这实际上与在您的文件中定义自己的 ENV
变量一样有效Dockerfile
.
https://github.com/docker/docker/issues/14634
虽然现在,您需要在 Dockerfile
中硬编码您的版本号。
实际上,这并不是一件坏事,因为这意味着您的构建将是可重复的(即,不会依赖于您 Dockefile
以外的任何东西)。