首页 > 解决方案 > 为什么我的 Docker Volume 不允许自动重新加载我的 Flask 应用程序?

问题描述

我正在尝试在 WSL2 中设置一个开发环境以在 Flask 网站/项目上工作,但是当我使用 docker-compose 启动我的项目时遇到了自动重新加载的问题。目前,该网站运行良好,但如果我更改任何模板并重新加载浏览器,除非我完全关闭容器并重建它,否则不会反映该更改。我还希望 Flasks 正常的自动重新加载功能能够正常工作。我尝试按照其他人的建议将卷挂载添加到我的 docker-compose.yml 无济于事,这是我当前的设置:

文件结构: 在此处输入图像描述

码头工人-compose.yml:

version: "3.8"

services:
  website:
    build: ./website
    ports:
      - "5000:5000"
    volumes: 
     - website:/code
volumes: 
  website:

Dockerfile(在网站上):

FROM python:latest
WORKDIR /code
ENV FLASK_APP=app.py
ENV FLASK_RUN_HOST=0.0.0.0
ENV FLASK_ENV=development
RUN apt-get update
RUN apt-get install cmake autoconf automake libtool nasm make pkg-config
COPY mozjpeg mozjpeg
RUN cd mozjpeg &&\
    mkdir build && cd build &&\
    cmake -G"Unix Makefiles" ../ &&\
    make install
RUN cd /usr/local/bin &&\
    ln -s /opt/mozjpeg/bin/cjpeg
RUN apt-get install -y pngquant
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . /code
#RUN pngquant --quality=65-80 test.png
#RUN cjpeg -quality 50 test.jpg
#RUN pwd
#RUN ls
EXPOSE 5000

CMD ["flask", "run"]

标签: pythondockerflaskdocker-composedockerfile

解决方案


使用以下docker-compose.yml,flask 能够实现实时编码/自动重新加载 docker

编辑-1

这是示例烧瓶应用程序的文件夹结构

C:.
|   docker-compose.yml
|   output.doc
|   README.md
|   
\---app
    |   app.py
    |   Dockerfile
    |   requirements.txt
    |   
    \---__pycache__
            app.cpython-36.pyc

而且Dockerfile

FROM python:3.6
COPY . /app
WORKDIR /app
RUN apt-get update
RUN apt-get install -y cmake autoconf automake libtool nasm make pkg-config
RUN apt-get install -y pngquant
RUN pip install -r requirements.txt
ENTRYPOINT ["python"]
CMD ["app.py"]

文件docker-compose.yml

version: "3.8"
services:
  web:
    build: ./app
    environment:
      FLASK_DEBUG: 1
      FLASK_APP: ./app.py
    ports: ['5000:5000']
    volumes: ['./app:/app']

推荐阅读