我的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 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
那么如何分享卷抛出docker-composer?
答案 0 :(得分:1)
卷字符串中有一个额外的空间,导致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 file section on volumes short syntax。
答案 1 :(得分:0)
您需要使用docker volumes语法,不带空格
<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