Nginx docker compose环境变量用作卷don';无法解决

Nginx docker compose环境变量用作卷don';无法解决,nginx,docker,docker-compose,dockerfile,Nginx,Docker,Docker Compose,Dockerfile,Docker版本(Mac最新版本) 我试图将路径外部化,以便每个开发人员都可以更改单个文件,将组件映射到其本地环境中的正确路径。例如,nginx服务器是一个静态网站 #localhost.env INDEX_PATH=/Users/felipe/website/public 这是我的作文 nginx: image: nginx ports: - "8081:8081" volumes: - ${INDEX_PATH}:/etc/nginx/html:

Docker版本(Mac最新版本)

我试图将路径外部化,以便每个开发人员都可以更改单个文件,将组件映射到其本地环境中的正确路径。例如,nginx服务器是一个静态网站

#localhost.env
INDEX_PATH=/Users/felipe/website/public
这是我的作文

 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编写配置

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)

知道我做错了什么吗?我相信这项功能是受支持的,但无法解决如何做到这一点


谢谢大家!

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

spot on mate。非常感谢你!
nginx:
    environment:
      INDEX_PATH: /Users/felipe/website/public
    image: nginx
    ports:
    - 8081:8081
    volumes:
    - .:/etc/nginx/html:ro   //HERE I WAS EXPECTING THE PATH