我用的是码头写作和v3。我正试着在码头装一卷:
./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-come.yml’中,卷‘app-册’必须是映射而不是字符串。
显然,我知道我需要更改volumes键/值对,但我不知道如何更改它,以便在服务之间共享一个卷。
我也签出了volumes_from,但这实际上只允许从其他容器继承。我见过有人在另一个容器上使用volumes_from,其中包含了他们想要的映射,但是使用了command: true设置,这样容器就不会实际运行,对我来说,这就像是一个黑客。
我该怎么做?
注意,我确实有以下工作:
nginx:
volumes:
- ./appdata:/appdata
php:
volumes:
- ./appdata:/appdata但这只是重复,我希望有一个命名的卷可以帮助我避免:-)
发布于 2020-07-13 10:31:30
名为“卷”的停靠库已从版本3开始删除。
但是,您可以使用扩展字段来避免复制卷源,并防止您将来输入:
version: '3.5'
x-services-volume:
&services-volume
type: bind
source: ./appdata
target: /appdata
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes: *services-volume
php:
build: ./php/
expose:
- 9000
# Use same way as for nginx if target override not needed.
volumes:
- <<: *services-volume
target: /opt/target-override注意:这个特性可以从3.4版本的文件格式开始使用。
发布于 2017-05-31 12:35:01
命名卷可以通过以下方式跨容器共享:
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:发布于 2017-05-31 12:28:24
这无需使用命名卷就可以解决这个问题:
volumes:
- ./appdata:/appdata所以,看起来:
services:
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes:
- ./appdata:/appdata
php:
build: ./php/
expose:
- 9000
volumes:
- ./appdata:/appdatahttps://stackoverflow.com/questions/44284484
复制相似问题