【发布时间】:2022-01-10 11:29:50
【问题描述】:
我正在尝试让我的 Flask Docker 构建能够从运行 uWSGI + Nginx 进行生产切换到简单地运行 flask run 进行本地开发。
我有 Flask 在开发模式下运行:
这是我的 Dockerfile:
FROM python:3
RUN apt-get -qq update
RUN apt-get install -y supervisor nginx
RUN pip install uwsgi
# Expose dev port
EXPOSE 5000
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY nginx.conf /etc/nginx/sites-enabled/default
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
RUN pip install --editable .
CMD [ "supervisord" ]
我正在暴露我从docker-compose.yml 运行的端口 5000:
version: '3'
services:
web:
build: ./
environment:
DATABASE_URL: postgresql://postgres@db/postgres
FLASK_APP: app.main
FLASK_ENV: development
command: flask run --host=0.0.0.0
ports:
- "5000:5000"
links:
- db
volumes:
- .:/app
db:
image: postgres
restart: always
ports:
- 5433:5432
volumes:
- data:/var/lib/postgresql/data
volumes:
data:
driver: local
我可以在http://0.0.0.0:5000/ 上构建并正常运行它,但如果我在视图或模板中更改任何代码,服务器上不会刷新/重新加载任何内容,我不得不重新构建。
我认为通过在我的 docker-compose 中指定 FLASK_ENV: development 可以启用 Flask 服务器的自动重新加载。关于如何调试的任何想法?
【问题讨论】:
标签: docker flask docker-compose