docker-compose.yml环境变量配置问题

docker-compose.yml内容

version: "3"
services:
  nginx:
    container_name: nginx
    image: nginx
    restart: always
    volumes:
      - ${LOCAL_PREFIX}/nginx.conf:${DOCKER_PREFIX}/nginx.conf
      - ${LOCAL_PREFIX}/www/:${DOCKER_PREFIX}/www/
      - ${LOCAL_PREFIX}/static/:${DOCKER_PREFIX}/static/
      - ${LOCAL_PREFIX}/conf.d/:${DOCKER_PREFIX}/conf.d/
      - ${LOCAL_PREFIX}/log/:${DOCKER_PREFIX}/log/
    ports:
      - "80:80"
      - "8080:8080"
    environment:
      - LOCAL_PREFIX=/root/nginx
      - DOCKER_PREFIX=/etc/nginx  

docker-compose config输出

WARNING: The LOCAL_PREFIX variable is not set. Defaulting to a blank string.
WARNING: The DOCKER_PREFIX variable is not set. Defaulting to a blank string.
services:
  nginx:
    container_name: nginx
    environment:
      DOCKER_PREFIX: /etc/nginx
      LOCAL_PREFIX: /root/nginx
    image: nginx
    ports:
    - published: 80
      target: 80
    - published: 8080
      target: 8080
    restart: always
    volumes:
    - /nginx.conf:/nginx.conf:rw
    - /www:/www:rw
    - /static:/static:rw
    - /conf.d:/conf.d:rw
    - /log:/log:rw
version: '3'

两个警告,没太搜到和我这个相关的解决方法
问题是:环境变量没生效,取环境变量时用的是默认值 /

参考GPT和自己的思路:

根据你提供的信息,很明显是环境变量没有被正确设置。根据输出结果,可以看到有两个警告提示 LOCAL_PREFIX 和 DOCKER_PREFIX 变量没有被设置,因此采用了默认值。你需要确认环境变量是否正确设置。

在你的 docker-compose.yml 文件中,你定义了 LOCAL_PREFIX 和 DOCKER_PREFIX 两个环境变量,但是在输出结果中,没有看到这两个环境变量的值被正确设置。考虑到它们是被设置在 nginx 服务中的,你需要检查是否在正确的服务内配置了这些环境变量。

你可以采取以下步骤检查并排除问题:

  1. 检查 docker-compose.yml 文件中定义的环境变量是否正确,确保变量名没有误入拼写错误。
  2. 确认这些环境变量是否在正确的服务中设置。
  3. 确认这些环境变量是否被正确设置为你期望的值。
  4. 验证你是否正确调用了 docker-compose config 命令(如果你不确定,请再次运行命令验证一下)。
  5. 尝试重新启动 docker 容器并再次运行 docker-compose config 命令,检查是否出现相同的警告消息。

如果以上步骤均无法帮助你解决问题,你可以考虑查看类似环境变量的配置示例,并参考其配置。另外,你也可以借助其他工具或技术,例如 Docker Compose 的调试命令或调试工具,来辅助你的调试。

你设置的环境变量是全局的么?重新启动系统看看呢