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

我试图将我的Owncloud实例移动到docker。 我有一个120GB根的“服务器”,500GB的USB磁盘指定为自己的云数据。 我想出了这样的configuration:

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

我的docker – 撰写:

 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”,来自owncloud / data(300GB)的数据正被复制到新卷上,这是不可能的,因为我没有这么多的可用磁盘空间。

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

我花了3个小时才发现这是不可能的,但我不敢相信是这样。 预先感谢您的答案。

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

你有2个选项:

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

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