如何使用docker-compose在容器之间共享卷

5
我的docker-compose定义了两个容器。我希望一个容器可以与另一个容器共享一个卷。
version: '3'
services:
  web-server:
    env_file: .env
    container_name: web-server
    image: web-server
    build: 
      dockerfile: docker/Dockerfile
    ports: 
      - 3000:3000
      - 3500:3500
    volumes:
      - static-content: /workspace/static
    command: sh /workspace/start.sh

  backend-server:
    volumes:
      - static-content: /workspace/static
  volumes:
    static-content:

上述Docker Compose文件声明了两个服务,web-server和backend-server。我在服务下声明了命名卷static-content。当我运行docker-compose -f docker-compose.yml up时,出现以下错误:
services.web-server.volumes contains an invalid type, it should be a string
services.backend-server.volumes contains an invalid type, it should be a string

那么我该如何通过docker-composer共享卷?
2个回答

3

您的卷字符串中有一个额外的空格,导致Yaml将解析从字符串数组更改为名称/值映射数组。请删除卷条目中的该空格(参见下文),以防止出现此错误:

version: '3'
services:
  web-server:
    env_file: .env
    container_name: web-server
    image: web-server
    build: 
      dockerfile: docker/Dockerfile
    ports: 
      - 3000:3000
      - 3500:3500
    volumes:
      - static-content:/workspace/static
    command: sh /workspace/start.sh

  backend-server:
    volumes:
      - static-content:/workspace/static
  volumes:
    static-content:

更多详细信息,请参见卷短语法的compose文件部分


2
您需要使用没有空格的docker卷语法。
<local_path>:<service_path>:<optional_rw_attributes>

例如:

./:/your_path/

将当前工作目录映射到 /your_path

例如:

./:/your_path/:ro

将当前工作目录映射到/your_path,并设置只读权限。

阅读以下文档以获取更多信息: https://docs.docker.com/compose/compose-file/#volume-configuration-reference


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接