2017-03-31 58 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做了什麼。謝謝 ! –