用作卷路径的docker-compose环境变量无法解析

时间:2017-04-27 11:03:29

标签: nginx docker docker-compose dockerfile

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)

知道我做错了什么吗?我相信这个功能是受支持的,但无法解决该怎么做。

谢谢!

1 个答案:

答案 0 :(得分:0)

env_file定义将环境变量从文件传递到容器中,但它不会在yml文件的docker-compose解析中被拾取。您可以使用的是.env file,它在解析docker-compose.yml文件之前加载,您甚至可以使用它来覆盖docker-compose.yml文件名本身。