将文件从Docker容器暴露给主机
我有一个容纳django应用程序的docker容器。 生成静态文件并将其复制到静态文件夹。
容器文件夹层次:
- var - django - app - static
在构build./manage.py collectstatic
镜像之前,我运行./manage.py collectstatic
以便静态文件位于/var/django/static
文件夹中。 为了公开应用程序并提供静态文件,我在主机上有一个nginx。 问题是,如果我做静态文件夹和主机上指定的文件夹之间的卷,当我运行docker容器,容器中的/var/django/static
文件夹被删除(以及未删除,但已装入)。 有什么办法可以克服吗? 如在设置音量,但告诉docker采取当前文件?
卷在Docker中视为挂载,这意味着主机目录将始终挂载在容器的目录中。 换句话说,你正在尝试做的事情对于Docker卷来说目前是不可能的。
关于这个问题的讨论见Github的问题: https : //github.com/docker/docker/issues/4361
一个可能的解决方法是将docker卷放到容器中的空目录中,然后在Docker RUN命令(或启动脚本)中,将静态内容复制到作为卷装入的空目录中。
另一个不错的解决scheme:1.安装SSHd 2.在主机上安装SSHFS 3.通过SSHFS将docker容器中的文件夹挂载到外部(主机)