使用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文件并添加数据目录