2017-04-13 448 views
0

我有一個Dockerfile,用於生成vendor/文件夾的圖像,其格式爲/home/ics199/vendor/。我想將此文件夾複製到/var/www/html。問題是我也使用/var/www/html作爲與主機一起安裝的卷。如果我將vendor/文件夾複製到/var/www/html,則卷在裝入並且無法使用時會被隱藏。所以,它需要在mount之後被複制。我希望它在容器中被複制以保留文件權限(不是容器 - >主機 - >容器),儘管我明白作爲副作用,它會出現在主機的安裝卷中。什麼是最好的方式(最好是自動)?將文件夾複製到Docker容器內的已安裝卷中

+0

你需要做的容器運行時拷貝(即通過'CMD'或'ENTRYPOINT'),我相信。 –

+0

你希望你的容器內的文件夾結構是'/ var/www/html/vendor'嗎?如果是這樣的話,你可以在你的'docker run'命令中使用'-v'兩次,你首先執行'-v/foo/bar:/ var/www/html',然後是'-v/home/ics199/vendor:在/ var/www/html等/ vendor'。 – Jacob

+0

我不認爲這會工作,因爲'/ home/ics199/vendor'不在主機上,它在容器中。現在,我正在手動執行'docker exec -it bash',然後執行'cp -R/home/ics199/vendor// var/www/html'。 – notmyidea

回答

0

我會做到這一點的入口點奧利弗建議,但不是一個副本,您可以使用您的容器內的符號鏈接到一個文件夾:

樣品entrypoint.sh:

#!/bin/sh 

ln -sf /home/ics199/vendor /var/www/html/vendor 
if [ $# == 0 ]; then 
    set -- /bin/sh 
fi 
exec "[email protected]" 

而且Dockerfile將包括:

COPY entrypoint.sh /entrypoint.sh 
ENTRYPOINT /entrypoint.sh 
+0

如果基本映像已經有一個入口點,會造成問題嗎?根據[Dockerfile參考](https://docs.docker.com/engine/reference/builder/#entrypoint),只有最後一個被執行。 – notmyidea

+0

您需要使用ln命令更新現有端點,或者在您的端點調用其端點。 – BMitch

相關問題