Docker Compose-在多个容器之间共享命名卷
我正在使用docker-compose和v3。我正在尝试在Docker中挂载卷:
./appdata:/appdata
我想将此作为卷,然后从多个容器中引用该卷。的卷配置参考仅示出了data-volume:
作为命名体积,用没有值,因此它不会像以上。
services: nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- app-volume
php:
build: ./php/
expose:
- 9000
volumes:
- app-volume
volumes:
app-volume: ./appdata:/appdata
这给了我:
错误:在文件“ ./docker-compose.yml”中,卷“ app-volume”必须是映射而不是字符串。
显然,我知道我需要更改volumes
键/值对,但是我不确定 如何 更改它,以便可以在服务之间共享卷。
我也已经签出,volumes_from
但这实际上只允许从其他容器继承。我见过有人volumes_from
在另一个容器上使用该容器,该容器包含他们想要的映射,但是command:
true设置了该容器,使该容器永远不会真正运行,在我看来,这就像是黑客。
我怎样才能做到这一点?
注意,我 确实 有以下工作:
nginx: volumes:
- ./appdata:/appdata
php:
volumes:
- ./appdata:/appdata
但这只是重复,我希望命名卷可以帮助我避免:-)
回答:
可以通过以下方式在容器之间共享命名卷:
services: nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- app-volume:location_in_the_container
php:
build: ./php/
expose:
- 9000
volumes:
- app-volume:location_in_the_container
volumes:
app-volume:
这是我用来更好理解的示例配置。我将从web
容器中生成的静态文件暴露给一个名为的卷static-
content,然后由该nginx
容器读取并提供服务:
services: nginx:
container_name: nginx
build: ./nginx/
volumes:
- static-content:/usr/src/app
web:
container_name: web
env_file: .env
volumes:
- static-content:/usr/src/app/public
environment:
- NODE_ENV=production
command: npm run package
volumes:
static-content:
以上是 Docker Compose-在多个容器之间共享命名卷 的全部内容, 来源链接: utcz.com/qa/430443.html