【问题标题】:Docker Compose with shell environment variable errorDocker Compose 与 shell 环境变量错误
【发布时间】:2019-03-27 20:55:44
【问题描述】:

我正在为应用程序运行 Docker 部署。我正在安装一个卷,我希望外壳环境变量提供外部路径。我收到此错误:

错误:视频服务器无法为服务视频服务器创建容器:卷规格无效:'46b9d2fb3b9b13c9404d31bae571dac3f633122393c4a77f2561afb8aed5c06e:=/opt/videos:rw':“卷”类型的安装配置无效:安装路径无效:'=/ 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 配置 (sudo docker system prune --all --volumes),然后第一次运行 docker-compose (sudo docker-compose up -d),一切正常。

但是,如果我关闭容器,重新构建它,然后再次尝试运行相同的命令 (sudo docker-compose up -d),则会收到上面显示的错误。

【问题讨论】:

  • 主机路径是绝对路径吗(是否以/开头)?在volumes: 规范中应该有一个:,而不是=

标签: docker docker-compose


【解决方案1】:

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

关于 Docker Compose 的文档volumes:docs.docker.com

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-11
    • 2015-06-17
    • 2018-08-07
    • 2022-01-01
    • 2018-02-03
    • 2019-02-25
    • 2019-07-26
    • 1970-01-01
    相关资源
    最近更新 更多