使用docker-compose或dockerfile挂载目录(不复制)

时间:2017-03-31 18:48:28

标签: docker docker-compose dockerfile

我试图将我的Owncloud实例移动到docker。我有一台服务器"使用120GB root和500GB usb磁盘指定用于owncloud数据。我想出了这样的配置:

    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

现在如果我做#34; docker-compose build&#34;,来自owncloud / data(300GB)的数据被复制到新卷,这是不可能的,因为我没有这么多的可用磁盘空间。

有没有办法使用docker-compose或dockerfile挂载这两个目录而不复制数据?有没有其他已知的处理这种情况的方法?

我花了3个多小时才发现这是不可能的,但我无法相信情况就是如此。提前感谢您的回答。

1 个答案:

答案 0 :(得分:0)

构建时,docker会将当前目录和子目录中的所有文件发送到守护程序。你知道这是上下文。

您有两个选择:

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

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