Python Docker Flask-jinja2.exceptions.TemplateNotFound错误

Python Docker Flask-jinja2.exceptions.TemplateNotFound错误,python,docker,flask,Python,Docker,Flask,站点在Docker容器外部装载良好。我看过其他帖子,也尝试过他们的解决方案,但他们对我不起作用 我正在运行Windows7和Docker快速启动终端。我正在使用192.168.99.100 IP访问该站点 我的目录结构是: - static - style.css - templates - index.html - app.py - Dockerfile - requirements.txt app.py Dockerfile 我的docker命令是: docker buil

站点在Docker容器外部装载良好。我看过其他帖子,也尝试过他们的解决方案,但他们对我不起作用

我正在运行Windows7和Docker快速启动终端。我正在使用192.168.99.100 IP访问该站点

我的目录结构是:

- static
    - style.css
- templates
    - index.html
- app.py
- Dockerfile
- requirements.txt
app.py

Dockerfile

我的docker命令是:

docker build -t "web-app" -f ./Dockerfile .
docker run -p 5000:5000 "web-app"
正在尝试访问该站点http://192.168.99.100:5000/ 提供错误jinja2.exceptions.TemplateNotFound:index.html。

来自Flask文档:

Flask将在templates文件夹中查找模板。因此,如果您的应用程序是一个模块,则此文件夹位于该模块旁边,如果它是一个包,则它实际上位于您的包中:

案例1:模块:

案例2:一揽子计划:

如果您的应用程序位于软件包案例2中,则需要包含一个_uinit_uuu.py文件。

来自Flask docs:

Flask将在templates文件夹中查找模板。因此,如果您的应用程序是一个模块,则此文件夹位于该模块旁边,如果它是一个包,则它实际上位于您的包中:

案例1:模块:

案例2:一揽子计划:

如果您的应用程序位于程序包案例2中,则需要包含一个_init__u;.py文件。

将RUN ls/app添加到Dockerfile中。我相信您会发现COPY templates/app是将模板的内容复制到/app,而不是复制目录本身

您可以通过将Dockerfile更改为:

或者,您可以将布局更改为:

- app
  - static
      - style.css
  - templates
      - index.html
  - app.py
  - requirements.txt
- Dockerfile
然后,复制命令将简化为:

COPY app /app
将RUN ls/app添加到Dockerfile。我相信您会发现COPY templates/app是将模板的内容复制到/app,而不是复制目录本身

您可以通过将Dockerfile更改为:

或者,您可以将布局更改为:

- app
  - static
      - style.css
  - templates
      - index.html
  - app.py
  - requirements.txt
- Dockerfile
然后,复制命令将简化为:

COPY app /app

就这样。它不是复制目录,只是目录的内容。就是这样。它不是复制目录,只是目录的内容。谢谢你的建议,它最终不是我需要的解决方案。谢谢你的建议,它最终不是我需要的解决方案。
COPY static /app/static
COPY templates /app/templates
COPY app.py /app
COPY requirements.txt /app
- app
  - static
      - style.css
  - templates
      - index.html
  - app.py
  - requirements.txt
- Dockerfile
COPY app /app