Docker版本(适用于Mac的最新版本)
Version 17.03.1-ce-mac5 (16048)
我正在尝试将路径外部化,以便每个开发人员都可以更改单个文件,以将组件映射到本地环境中的正确路径。例如,nginx服务器是一个静态网站。
#localhost.env
INDEX_PATH=/Users/felipe/website/public
这是我的compose.yml
nginx:
image: nginx
ports:
- "8081:8081"
volumes:
- ${INDEX_PATH}:/etc/nginx/html:ro
env_file:
- ./localhost.env
简而言之,我将 INDEX_PATH 变量定义为指向我的本地路径,我希望nginx从那里为网站服务。然后另一位开发人员应该设置
#localhost.env
INDEX_PATH=/Users/somebodyElse/whatever/public
由于某种原因我不理解局部变量以某种方式无法正确解析,至少在使用作为卷的路径时。
docker-compose config
nginx:
environment:
INDEX_PATH: /Users/felipe/website/public
image: nginx
ports:
- 8081:8081
volumes:
- .:/etc/nginx/html:ro //HERE I WAS EXPECTING THE PATH
正如您所看到的,它只是被解析为。(一个点而不是路径/ Users / felipe / website / public)
知道我做错了什么吗?我相信这个功能是受支持的,但无法解决该怎么做。
谢谢!
答案 0 :(得分:0)
env_file
定义将环境变量从文件传递到容器中,但它不会在yml文件的docker-compose解析中被拾取。您可以使用的是.env
file,它在解析docker-compose.yml文件之前加载,您甚至可以使用它来覆盖docker-compose.yml文件名本身。