如何通过 docker-compose 在容器之间共享卷

Zha*_* Yi 5 docker docker-compose

我的 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:
Run Code Online (Sandbox Code Playgroud)

上面的 docker composer 文件声明了两个服务,web-server 和 backend-server。我static-content在服务下声明了命名卷。运行时出现以下错误docker-composer -f docker-composer.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
Run Code Online (Sandbox Code Playgroud)

那么如何共享卷抛出 docker-composer?

小智 2

您需要使用 docker Volumes 语法,不带空格

<local_path>:<service_path>:<optional_rw_attributes>
Run Code Online (Sandbox Code Playgroud)

例如:

./:/your_path/
Run Code Online (Sandbox Code Playgroud)

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

这个例子:

./:/your_path/:ro
Run Code Online (Sandbox Code Playgroud)

将当前工作目录映射到具有只读权限的 /your_path

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