docker - 将文件从Docker容器暴露给主机

标签 docker docker-volume

我有一个存放django应用程序的docker容器。生成静态文件并将其复制到静态文件夹。
容器文件夹层次结构:

- var
    - django
        - app
        - static

在构建Docker镜像之前,我先运行./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命令(或启动脚本)中,将静态内容复制到作为卷装入的空目录中。

关于docker - 将文件从Docker容器暴露给主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38940811/

相关文章:

ssl - 将 docker 存储库配置为 artifactory 中的子域

docker - 无法设置本地主机。这样可以防止创建GUID

docker - docker 在哪里存储卷数据?

go - docker 错误 : Volume specifies nonexistent driver inmemory

ruby - Ruby在Java中是否具有等效的JAR文件?尝试减小Docker镜像的大小

spring - Apache CXF JaxWsProxyFactoryBean SSL 配置调用外部 https 失败

scala - 已启动 Web 应用程序的 Docker 和 http url

指向子目录/子文件夹的Azure Docker容器卷

docker - 使用 linux 和 win 提取非 root 命名卷权限的工作方法

amazon-web-services - 如何在 AWS EKS 上托管的 pod 内挂载外部 Windows 文件共享?