2015-01-15 101 views
8

我有維基媒體在Docker上運行。維基媒體的擴展名位於extensions/文件夾中,最初包含內置擴展名(一個擴展名=一個子文件夾)如何合併主機文件夾和Docker中的容器文件夾?

現在我希望添加新的擴展名。但我不喜歡修改Dockerfile或在現有容器上創建新提交的選項。

是否可以在主機中創建一個文件夾(例如/home/admin/wikimedia/extensions/),該文件夾將與容器中的extension文件夾合併(不覆蓋)?因此,無論何時我想要安裝新的擴展名,我只需將擴展名文件夾複製到主機上/home/admin/wikimedia/extensions/

回答

8

您可以將卷從主機掛載到擴展文件夾以外的位置,然後在啓動腳本中,內容到容器的目錄。您將需要重建一次主機。

例如:

Dockerfile: 
    RUN cp startup-script /usr/local/bin/startup-script 
    CMD /usr/local/bin/startup-script 

startup-script: 
    #!/bin/bash 
    cp /mnt/extensions /path/to/wikipedia/extensions 
    /path/to/old-startup-script [email protected] 

docker run -d -v /home/admin/wikimedia/extensions:/mnt/extensions wikipedia 

這是一種方式來解決這個問題,其他的辦法是維持擴展一個單獨的數據容器,那麼你將裝入此,並保持它的維基百科之外容器。它必須具有所有的擴展。

可以啓動一個像這樣:

docker run -d -v /home/admin/wikimedia/extensions:/path/to/wikipedia/extensions --name extensions busybox tail -f /dev/null 
docker run -d --volumes-from extensions wikipedia 
+0

是''到/ mnt/extensions''的路徑擴展文件夾在我的主機?啓動腳本如何訪問容器外的文件? –

+1

/mnt/extensions是容器內的安裝位置,我正確編輯了docker run命令。 – Michael

相關問題