Docker使用env_file参数指定的环境变量组合在dockerfile中不起作用

时间:2015-10-26 16:35:59

标签: docker environment-variables docker-compose fig

这是我docker-compose.yml文件的一小部分,我正在使用docker-compose build percona_dev运行。

percona_dev:
  build: docker/percona
  dockerfile: percona-dev
  env_file: docker.env

我在docker.env中指定了环境变量,如下所示:

USERNAME=xxx
PASSWORD=xxx
DESKTOP_IP=192.168.1.1
PLAYBOOK_LOCATION=/path/to/location/

这是我的Dockerfile percona-dev的相关部分:

FROM percona:5.6.24
MAINTAINER xxx

RUN apt-get update && apt-get install wget

RUN wget --ftp-user=$USERNAME --ftp-password=$PASSWORD ftp://$DESKTOP_IP/$PLAYBOOK_LOCATION/inventory/localhost -O /tmp/playbook/hosts

EXPOSE 3306
ENTRYPOINT [“/usr/bin/mysql”]

不幸的是,环境变量无法识别,并且构建失败:

Step 5 : RUN wget --ftp-user=$USERNAME --ftp-password=$PASSWORD ftp://$DESKTOP_IP/$PLAYBOOK_LOCATION/inventory/localhost -O /tmp/playbook/hosts
 ---> Running in 3595b5ce9581
ftp:////inventory/localhost: Invalid host name.
Service 'percona_dev' failed to build:

如何在不在我的Dockerfile或图像的文件系统层历史中暴露敏感环境变量的情况下运行构建?

1 个答案:

答案 0 :(得分:2)

环境变量不可用于构建步骤。请参阅this proposal以便在撰写时更明显,this feature request以支持添加到docker 1.9中的新构建参数。

build args将满足您的需求。