Docker用env_file参数指定的环境variables在dockerfile中不工作

这是我docker-compose.yml docker-compose build percona_dev运行docker-compose.yml文件的代码片段。

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

我已经在docker.env指定了这样的环境variables:

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

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

 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”] 

不幸的是,环境variables不能被识别,并且构build失败:

 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: 

我如何确保我可以运行构build而不暴露我的Dockerfile或我的图像的文件系统层历史中的敏感环境variables?

环境variables不适用于构build步骤。 看到这个build议更加明显的构成和这个function请求,以支持新的构build参数添加到docker1.9。

构build参数将会做你所需要的。