Docker Compose with shell环境变量错误

Docker Compose with shell环境变量错误,docker,docker-compose,Docker,Docker Compose,我正在为应用程序运行Docker部署。我正在装入一个卷,希望外部路径由shell环境变量提供。我得到这个错误: 错误:对于视频服务器,无法为服务视频服务器创建容器:无效的卷规范:“46b9d2fb3b9b13c9404d31bae571dac3f633122393c4a77f2561afb8aed5c06e:=/opt/videos:rw”:类型“volume”的装载配置无效:装载路径无效:“=/opt/videos”装载路径必须为绝对路径 我的docker compose配置如下: video

我正在为应用程序运行Docker部署。我正在装入一个卷,希望外部路径由shell环境变量提供。我得到这个错误:

错误:对于视频服务器,无法为服务视频服务器创建容器:无效的卷规范:“46b9d2fb3b9b13c9404d31bae571dac3f633122393c4a77f2561afb8aed5c06e:=/opt/videos:rw”:类型“volume”的装载配置无效:装载路径无效:“=/opt/videos”装载路径必须为绝对路径

我的docker compose配置如下:

video-server:
    build:
      context: .
      dockerfile: video-server_Dockerfile
    container_name: video-server
    networks:
      - videoManagerNetwork
    environment:
      - VIDEO_MANAGER_DIR=/opt/videos
    volumes:
      - ${VIDEO_MANAGER_DIR_PROD}=/opt/videos
    ports:
      - 9000:8080
通过执行这两个命令,我可以看到VIDEO_MANAGER_DIR_PROD环境变量的正确值,因此我知道它在我的shell中:

echo $VIDEO_MANAGER_DIR_PROD
sudo echo $VIDEO_MANAGER_DIR_PROD
奇怪的是,如果我彻底清除docker配置(
sudocker system prune--all--volumes
),然后第一次运行docker compose(
sudocker compose up-d
),一切正常


但是,如果我取下容器,重新构建它,并尝试再次运行相同的命令(
sudo docker compose up-d
),则会出现上面显示的错误。

您不能像变量一样分配源卷,因此您将使用
进行此分配

关于Docker Compose
卷的文档


主机路径是否为绝对路径(是否以
/
开头)?在
卷:
规范中,后面应该有
,而不是
=
video-server:
  build:
    context: .
    dockerfile: video-server_Dockerfile
  container_name: video-server
    networks:
      - videoManagerNetwork
    environment:
      - VIDEO_MANAGER_DIR: /opt/videos
    volumes:
      - ${VIDEO_MANAGER_DIR_PROD}:/opt/videos
    ports:
      - 9000:8080