热装加载烧瓶应用程序在Docker上与Gunicorn不起作用

发布于 2025-02-11 04:07:16 字数 1331 浏览 4 评论 0原文

如标题所述,我正在与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:
enter image description here

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏至、离别 2025-02-18 04:07:16

答案应该有助于提供上下文,但是TL; dr是烧瓶调试器在Gunicorn内部不起作用。

This answer should help provide context, but the TL;DR is that the Flask debugger doesn't work inside of Gunicorn.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文