热装加载烧瓶应用程序在Docker上与Gunicorn不起作用
如标题所述,我正在与Gunicorn一起使用一个停靠的烧瓶应用程序,但热重新加载不起作用。
我知道我必须将本地文件系统映射到容器的文件系统,以便它知道调试模式上的更改和烧瓶将完成其余的工作。
这是我的dockerfile
:
FROM python:3.9
ARG USER
ARG PASS
ARG RESOLVER_URL
ENV PIP_INDEX_URL=https://$USER:$PASS@$RESOLVER_URL
ENV FLASK_APP jfrog_api.py
ENV FLASK_ENV development
COPY . /app/
WORKDIR /app
RUN adduser --system --group app -u 1001 \
&& apt-get update \
&& apt-get upgrade -y \
&& python3 -m pip install -r requirements.txt
USER app:app
EXPOSE 5000
CMD ["gunicorn", "-b", "0.0.0.0:5000", "jfrog_api:app"]
这是我的docker-compose.yml
file:
version: '3'
services:
jfrog-api:
build: .
image: jfrog-api
ports:
- "${JFROG_API_PORT:-5000}:5000"
volumes:
- type: volume
source: data
target: /data
env_file: .env
restart: always
volumes:
data:
这是我的烧瓶应用程序的入口点,jfrog_api .py
:
from api import create_app
app = create_app()
我已经检查了许多其他类似的情况,但是我仍然无法使其在项目中起作用。任何想法都将不胜感激。
As the title states, I am working with a dockerized Flask app with Gunicorn, but the hot reload is not working.
I know I have to map the local file system to that of the container, so that it is aware of the changes and Flask on Debug mode will do the rest.
This is the structure of my project:
This is my Dockerfile
:
FROM python:3.9
ARG USER
ARG PASS
ARG RESOLVER_URL
ENV PIP_INDEX_URL=https://$USER:$PASS@$RESOLVER_URL
ENV FLASK_APP jfrog_api.py
ENV FLASK_ENV development
COPY . /app/
WORKDIR /app
RUN adduser --system --group app -u 1001 \
&& apt-get update \
&& apt-get upgrade -y \
&& python3 -m pip install -r requirements.txt
USER app:app
EXPOSE 5000
CMD ["gunicorn", "-b", "0.0.0.0:5000", "jfrog_api:app"]
This is my docker-compose.yml
file:
version: '3'
services:
jfrog-api:
build: .
image: jfrog-api
ports:
- "${JFROG_API_PORT:-5000}:5000"
volumes:
- type: volume
source: data
target: /data
env_file: .env
restart: always
volumes:
data:
This is the entrypoint of my Flask application, jfrog_api.py
:
from api import create_app
app = create_app()
I have checked many other similar cases but I still cannot make it work in my project. Any ideas would be greatly appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
此答案应该有助于提供上下文,但是TL; dr是烧瓶调试器在Gunicorn内部不起作用。
This answer should help provide context, but the TL;DR is that the Flask debugger doesn't work inside of Gunicorn.