从容器到主机 docker 编写的卷共享



我正在尝试在容器和主机之间共享数据。所以我只想这样做来存储容器文件。数据必须从容器共享到主机。

我的码头工人-组合.yml

version: "3.3"
services:
django:
image: python:slim
volumes:
- type: volume
source: ./env
target: /usr/local/lib/python3.6/site-packages
volume:
nocopy: true
- ./src:/usr/src/app
ports:
- '80:80'
working_dir: /usr/src/app
command: bash -c "pip install -r requirements.txt && python manage.py runserver"

当我运行 docker 时抛出这个:

错误:对于 django 无法为服务 django 创建容器:无效 绑定装载规范 "/Users/gustavoopb/git/adv/env:/usr/local/lib/python3.6/site-packages:nocopy": 无效的卷规格: '/Users/gustavoopb/git/adv/env:/usr/local/lib/python3.6/site-packages:nocopy': "绑定"类型的装载配置无效:字段卷选项不得 指定的错误:启动项目时遇到错误。

https://docs.docker.com/compose/compose-file/#long-syntax-3

您正在尝试将命名卷语法与绑定装载一起使用。我会将您的语法切换为:

version: "3.3"
services:
django:
image: python:slim
volumes:
- type: bind
source: ./env
target: /usr/local/lib/python3.6/site-packages
- ./src:/usr/src/app
ports:
- '80:80'
working_dir: /usr/src/app
command: bash -c "pip install -r requirements.txt && python manage.py runserver"

请注意type的变化和缺少nocopy选项。不支持将文件从映像复制到主机绑定,这仅适用于命名卷。

我的问题是在我的容器出现故障时保持 python 环境。为此,我需要共享要托管的容器内部的环境。我尝试了 docker 文档建议,但它不起作用。

volume: 
nocopy: true

我的解决方案: 我创建了一个命名容器。

version: "2"
services:
django:
image: python:2.7
command: bash -c "pip install -r requirements.txt && python manage.py collectstatic --no-input && python manage.py migrate && python manage.py runserver 0.0.0.0:80"
env_file:
- .env
volumes:
- .:/app
- env:/Library/Python/2.7/site-packages
links:
- database
ports:
- "8000:80"
working_dir: /app
volumes:
env:

文档中指定的卷不在服务中使用,而是在服务外部指定。尝试从卷中删除最后一行:

volume:
nocopy: true

最新更新