gpt4 book ai didi

docker - 如何将相同的卷应用于多个 docker compose 服务?

转载 作者:行者123 更新时间:2023-12-02 20:58:42 27 4
gpt4 key购买 nike

假设有两个服务,它们定义了几个卷。但是这些卷中的大部分都用于两种服务:

version: '3'
services:
service1:
image: node:lts-alpine
working_dir: /
volumes:
- ./package.json:/package.json
- ./tsconfig.json:/tsconfig.json
- ./packages:/packages
- ./node_modules:/node_modules
- ./services/service1:/services/service1
command: yarn service1:start

service2:
image: node:lts-alpine
working_dir: /
volumes:
- ./package.json:/package.json
- ./tsconfig.json:/tsconfig.json
- ./packages:/packages
- ./node_modules:/node_modules
- ./services/service2:/services/service2
command: yarn service2:start

有没有办法防止这种重复?

我很想做这样的事情:
version: '3'
services:
service1:
image: node:lts-alpine
working_dir: /
volumes:
- myVolumeList
- ./services/service1:/services/service1
command: yarn start

service2:
image: node:lts-alpine
working_dir: /
volumes:
- myVolumeList
- ./services/service2:/services/service2
command: yarn start

myVolumeList:
- ./package.json:/package.json
- ./tsconfig.json:/tsconfig.json
- ./packages:/packages
- ./node_modules:/node_modules

编辑:我只使用 docker compose 进行本地开发。卷对我来说很棒,因为更改源代码文件会自动重新启动我的服务。因此复制文件一次是不够的

最佳答案

  • 在 native ,您可以执行以下操作:

  • 也许这可以解决您的问题。
    version: "3"

    services:
    srv1:
    image: someimage
    volumes:
    - data:/data
    srv2:
    image: someimage
    volumes:
    - data:/data

    volumes:
    data:
  • 有一个插件 - https://github.com/MatchbookLab/local-persist (使用前请阅读!)- 可让您更改卷挂载点。

  • 基本上,安装它: curl -fsSL https://raw.githubusercontent.com/MatchbookLab/local-persist/master/scripts/install.sh | sudo bash
    然后创建一个卷: docker volume create -d local-persist -o mountpoint=/data/images --name=images
    然后使用任意数量的容器:

    docker run -d -v images:/path/to/images/on/one/ one
    docker run -d -v images:/path/to/images/on/two/ two

    如果你想使用 docker-compose,有一个例子:

    version: '3'

    services:
    one:
    image: alpine
    working_dir: /one/
    command: sleep 600
    volumes:
    - data:/one/

    two:
    image: alpine
    working_dir: /two/
    command: sleep 600
    volumes:
    - data:/two/

    volumes:
    data:
    driver: local-persist
    driver_opts:
    mountpoint: /data/local-persist/data

    这里几乎是同样的问题: docker volume custom mount point
  • 这仅适用于 docker-compose 版本“2”:
  • version: '2'
    services:

    srv1:
    image: sometag
    volumes_from:
    - data

    srv2:
    image: sometag
    volumes_from:
    - data

    data:
    image: sometag
    volumes:
    - ./code-in-host:/code

    关于docker - 如何将相同的卷应用于多个 docker compose 服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61547472/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com