2017-03-31 369 views
0

Im试图将我的Owncloud实例移动到docker。我有一个带有120GB根的“服务器”,以及指定用于自己云端数据的500GB USB磁盘。我想出了这样的配置:使用docker-compose或dockerfile挂载目录(不复制)

docker-owncloud 
├── docker-compose.yml 
├── mysql 
│   ├── db <- mysql files 
│   └── Dockerfile 
└── owncloud 
    ├── data <- owncloud files (300GB) 
    └── Dockerfile 

我的搬运工,撰写:

version: '3' 
services: 
    owncloud: 
     build: owncloud 
     ports: 
      - 8080:80 
     links: 
      - mysql 
     volumes: 
      - ./owncloud/data:/var/www/html 
    mysql: 
     build: mysql 
     environment: 
      - MYSQL_ROOT_PASSWORD=XXX 
     volumes: 
      - ./mysql/db:/var/lib/mysql 

Mysql的dockerfile:

from mysql:5.7.17 
ENV LANG=C.UTF-8 
ENV TZ=Europe/Warsaw 

Owncloud dockerfile:

FROM owncloud:9.1.4-apache 
ENV LANG=C.UTF-8 
ENV TZ=Europe/Warsaw 

现在,如果我这样做“docker-compose build”,来自自己的数据云/数据(300GB)正被复制到新卷中,这是不可能的,因为我没有这么多的可用磁盘空间。

有没有办法使用泊坞窗,撰写或dockerfile不将数据复制到安装这两个目录?有没有其他已知的方式来处理这种情况?

我必须花更多的3小时发现,这是不可能的,但我无法相信这是事实。预先感谢您的答案。

+0

什么让你觉得数据被复制,而不是安装?你发布的内容应该如预期的那样工作 – Creek

+0

当我执行docker-compose build命令时,它对于owncloud来说持续很长时间,并且我可以在“df -h”中看到可用空间开启/减少。 –

+0

'docker-compose up owncloud'发生了同样的事情? – Creek

回答

0

当您构建,码头工人正在发送当前目录和子目录的守护进程的所有文件。你知道这是上下文。

你有2种选择:

  • 移动数据目录,你正在构建的图像目录结构之外。
  • 创建.dockerignore文件,并添加数据目录

https://docs.docker.com/engine/reference/builder/#usage

+0

.dockerignore做了什么。谢谢 ! –