Flask 前端未显示卷内模板文件的更改
Changes on template files inside volume not showing on Flask frontend
我正在使用具有以下配置的 docker-compose
Flask 实现
docker-撰写:
version: '3'
services:
dashboard:
build:
context: dashboard/
args:
APP_PORT: "8080"
container_name: dashboard
ports:
- "8080:8080"
restart: unless-stopped
environment:
APP_ENV: "prod"
APP_DEBUG: "False"
APP_PORT: "8080"
volumes:
- ./dashboard/:/usr/src/app
dashboard/Dockerfile:
FROM python:3.7-slim-bullseye
ENV PYTHONUNBUFFERED True
ARG APP_PORT
ENV APP_HOME /usr/src/app
WORKDIR $APP_HOME
COPY requirements.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
CMD exec gunicorn --bind :$APP_PORT --workers 1 --threads 8 --timeout 0 main:app
dashboard/main.py:
import os
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
如果我使用 VSCode 对我的主机系统中的 index.html
文件应用任何更改,这些更改在我刷新页面时将不会应用。但是,我尝试使用 docker exec -it dashboard bash
和 cat /usr/src/app/templates/index.html
进入容器,它们反映在容器内部,因为该卷在主机和容器之间共享。
如果我停止容器并 运行 它再次应用更改,但因为我在前端工作,所以一直这样做很烦人。
为什么更改不会显示在浏览器上,但会在容器上复制?
你应该使用:TEMPLATES_AUTO_RELOAD=True
来自https://flask.palletsprojects.com/en/2.0.x/config/
模板似乎已预加载,在您启用此功能之前不会更新。
我正在使用具有以下配置的 docker-compose
Flask 实现
docker-撰写:
version: '3'
services:
dashboard:
build:
context: dashboard/
args:
APP_PORT: "8080"
container_name: dashboard
ports:
- "8080:8080"
restart: unless-stopped
environment:
APP_ENV: "prod"
APP_DEBUG: "False"
APP_PORT: "8080"
volumes:
- ./dashboard/:/usr/src/app
dashboard/Dockerfile:
FROM python:3.7-slim-bullseye
ENV PYTHONUNBUFFERED True
ARG APP_PORT
ENV APP_HOME /usr/src/app
WORKDIR $APP_HOME
COPY requirements.txt ./requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
CMD exec gunicorn --bind :$APP_PORT --workers 1 --threads 8 --timeout 0 main:app
dashboard/main.py:
import os
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
如果我使用 VSCode 对我的主机系统中的 index.html
文件应用任何更改,这些更改在我刷新页面时将不会应用。但是,我尝试使用 docker exec -it dashboard bash
和 cat /usr/src/app/templates/index.html
进入容器,它们反映在容器内部,因为该卷在主机和容器之间共享。
如果我停止容器并 运行 它再次应用更改,但因为我在前端工作,所以一直这样做很烦人。
为什么更改不会显示在浏览器上,但会在容器上复制?
你应该使用:TEMPLATES_AUTO_RELOAD=True
来自https://flask.palletsprojects.com/en/2.0.x/config/
模板似乎已预加载,在您启用此功能之前不会更新。