首页 > 解决方案 > 如何在存储在单独容器中的烧瓶 HTML 模板中引用?

问题描述

我正在使用 docker 建立一个网站。

主站点将在 flask/python 中构建并放入一个容器中。

但是,对于博客,我正在考虑在 WordPress/PHP 中构建它并将其放入另一个容器中。

所以我没有复制两个站点都需要的 CSS/JS 文件/HTML 模板,是否可以将它们放入自己的容器中,而其他容器都引用它们?

在此处输入图像描述

如果是这样,我将如何在烧瓶中引用这些文件?例如,如何修改下面的“包含”代码,使其引用存储在不同容器中的 navbar.html?

{% extends 'template.html' %}
{% block nav %}
{% include 'navbar.html' %}
{% endblock %}

标签: dockerflaskjinja2

解决方案


要配置多个 Docker 容器以共享公共文件,您应该查看 Docker 卷,尤其是使用只读卷

请记住,多个容器可以挂载同一个卷,并且可以同时对其中的一些容器进行读写挂载,同时对其他容器进行只读挂载。

该文档提供了一个示例调用:

$ docker run -d \
  --name=nginxtest \
  --mount source=nginx-vol,destination=/usr/share/nginx/html,readonly \
  nginx:latest

这会将卷安装nginx-vol/usr/share/nginx/html并将其标记为只读。

回到您的特定用例:您可以创建一个 Docker 卷,将模板存储在其中并将其挂载到运行 Flask 应用程序的容器中/opt/project/app/templates(假设您的项目存储在其中/opt/project并将其模板存储在app/templates您自己设置的路径)。


推荐阅读