从容器到主机docker-compose的卷共享

时间:2017-07-29 23:59:36

标签: django docker docker-compose

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

我的docker-compose.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创建容器:无效   绑定安装规范   " /用户/ gustavoopb / GIT中/进阶/ ENV:/usr/local/lib/python3.6/site-packages:NOCOPY&#34 ;:   无效的卷规格:   ' /用户/ gustavoopb / GIT中/进阶/ ENV:/usr/local/lib/python3.6/site-packages:NOCOPY&#39 ;:   类型" bind":字段VolumeOptions不能是无效的mount配置   指定的错误:启动项目时遇到错误。

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

3 个答案:

答案 0 :(得分:1)

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

=COUNTIF(Sheet1!$A:$C, CHAR(96+COLUMN(A:A)))

请注意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选项的缺失。不支持将文件从映像复制到主机绑定,仅适用于命名卷。

答案 1 :(得分:1)

我的问题是当我的容器出现故障时保持python env。为此,我需要共享容器内的env来托管。我尝试过docker docs建议,但它没有工作。

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:

答案 2 :(得分:0)

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

if (!submt) {
    return;
}