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