【问题标题】:docker-compose environment variables used as path for volumes don't get resolved用作卷路径的 docker-compose 环境变量未得到解析
【发布时间】:2017-09-25 03:21:21
【问题描述】:

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

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)

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

谢谢!

【问题讨论】:

    标签: nginx docker docker-compose dockerfile


    【解决方案1】:

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

    【讨论】:

    • 看准队友。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2022-11-10
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    • 2019-07-26
    • 1970-01-01
    相关资源
    最近更新 更多