docker-compose在多个服务之间共享本地绑定量

时间:2019-09-02 13:02:13

标签: docker docker-compose docker-volume

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

cols

当我在开发中(从docker compose)运行服务时,我正在使用监视程序,监视* root |-- * shared - | -- * sharedA | | -- src | - | -- * sharedB - | -- src - shared/sharedA/src

上的更改

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

shared/sharedB/src

我的目标是拥有

的卷声明
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

在一个中心位置,使我可以一次定义它们,并将它们导入/连接到每个服务中,

尝试通过本指南+ docker compose docs
http://blog.code4hire.com/2018/06/define-named-volume-with-host-mount-in-the-docker-compose-file/
进行了一些改动来实现它,但是很遗憾,我无法使其工作。.

我不确定是否有可能,但是有关docker compose卷的文档并没有真正的帮助,所以我认为也许这里有人已经处理过类似的东西

1 个答案:

答案 0 :(得分:0)

您可以使用命名卷:

  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