将文件夹复制到Docker容器内的已安装卷中
问题描述:
我有一个Dockerfile,用于生成vendor/
文件夹的图像,其格式为/home/ics199/vendor/
。我想将此文件夹复制到/var/www/html
。问题是我也使用/var/www/html
作为与主机一起安装的卷。如果我将vendor/
文件夹复制到/var/www/html
,则卷在装入并且无法使用时会被隐藏。所以,它需要在mount之后被复制。我希望它在容器中被复制以保留文件权限(不是容器 - >主机 - >容器),尽管我明白作为副作用,它会出现在主机的安装卷中。什么是最好的方式(最好是自动)?将文件夹复制到Docker容器内的已安装卷中
答
我会做到这一点的入口点奥利弗建议,但不是一个副本,您可以使用您的容器内的符号链接到一个文件夹:
样品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
你需要做的容器运行时拷贝(即通过'CMD'或'ENTRYPOINT'),我相信。 –
你希望你的容器内的文件夹结构是'/ var/www/html/vendor'吗?如果是这样的话,你可以在你的'docker run'命令中使用'-v'两次,你首先执行'-v/foo/bar:/ var/www/html',然后是'-v/home/ics199/vendor:在/ var/www/html等/ vendor'。 – Jacob
我不认为这会工作,因为'/ home/ics199/vendor'不在主机上,它在容器中。现在,我正在手动执行'docker exec -it bash',然后执行'cp -R/home/ics199/vendor// var/www/html'。 –
notmyidea