+-

我正在使用docker-compose和v3.我正在尝试在docker中安装一个卷:
./appdata:/appdata
我希望将其作为卷,然后从多个容器引用该卷. volume configuration reference仅显示数据量:作为命名卷,没有值,因此它看起来不像上面那样.
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
这给了我:
ERROR: In file ‘./docker-compose.yml’, volume ‘app-volume’ must be a mapping not a string.
显然我知道我需要更改卷键/值对,但我不知道如何更改它以便我可以在服务之间共享卷.
我还检查了volumes_from,但这实际上只允许从其他容器继承.我见过有人在包含他们想要的映射的另一个容器上使用volumes_from,但是使用命令:true set,以便容器永远不会实际运行,这对我来说就像是一个黑客.
我怎样才能做到这一点?
注意,我确实有以下工作:
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 – 在多个容器之间共享命名卷 - 乐贴网