【问题标题】:docker-compose share local bind volume between multiple servicesdocker-compose 在多个服务之间共享本地绑定卷
【发布时间】:2019-09-02 13:02:13
【问题描述】:

我有一个用于单声道存储库的 docker compose 文件。 我有多个使用相同代码的服务, 所有共享代码都在以下文件夹结构中:

* root
|-- * shared
-   | -- * sharedA
    |    | -- src
    |    -
    | -- * sharedB
    -    | -- src
         -

当我在开发中运行我的服务(来自 docker compose)时,我正在使用一个监视程序来监视 shared/sharedA/srcshared/sharedB/src 上的变化

我的 docker compose 文件看起来像这样

version: '3'
services:
  service_a:
    build:
      context: .
      dockerfile: 'services/serviceA/Dockerfile'
    volumes:
      - ./services/serviceA/src/:/usr/src/app/services/serviceA/src
      - ./shared/sharedA/src/:/usr/src/app/shared/sharedA/src
      - ./shared/sharedB/src/:/usr/src/app/shared/sharedB/src

  service_b:
    build:
      context: .
      dockerfile: 'services/serviceB/Dockerfile'
    volumes:
      - ./services/serviceB/src/:/usr/src/app/services/serviceB/src
      - ./shared/sharedA/src/:/usr/src/app/shared/sharedA/src
      - ./shared/sharedB/src/:/usr/src/app/shared/sharedB/src

我的目标是拥有

的卷声明
- ./shared/sharedA/src/:/usr/src/app/shared/sharedA/src
- ./shared/sharedB/src/:/usr/src/app/shared/sharedB/src

在一个允许我定义它们一次并在每个服务中导入/连接它们的中心位置,

尝试通过本指南 + docker compose docs
http://blog.code4hire.com/2018/06/define-named-volume-with-host-mount-in-the-docker-compose-file/
进行一些更改以实现它,但不幸的是我无法让它工作..

我不确定这是否可行,但是关于 docker compose volumes 的文档并没有真正的帮助,所以我想也许这里有人已经处理过类似的事情????

【问题讨论】:

    标签: docker docker-compose docker-volume


    【解决方案1】:

    您可以使用命名卷:

      version: '3'
    services:
      service_a:
        build:
          context: .
          dockerfile: 'services/serviceA/Dockerfile'
        volumes:
          - sharedA:/usr/src/app/shared/sharedA/src
          - sharedB:/usr/src/app/shared/sharedB/src
    
      service_b:
        build:
          context: .
          dockerfile: 'services/serviceB/Dockerfile'
        volumes:
          - sharedA:/usr/src/app/shared/sharedA/src
          - sharedB:/usr/src/app/shared/sharedB/src
    
    
    volumes:
      sharedA:
        driver: local
        driver_opts:
          type: none
          device: ./shared/sharedA/src/
          o: bind
      sharedB:
        driver: local
        driver_opts:
          type: none
          device: ./shared/sharedB/src/
          o: bind
    

    【讨论】:

    • 这会减少一点样板的数量,但我想没有办法避免在每个容器中定义每个命名卷的目标,对吧?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多