在Docker上自动重新加载烧瓶服务器

我希望我的瓶服务器检测代码中的更改并自动重新加载。 我在Docker容器上运行这个。 每当我改变一些东西的时候,我必须重新build造一个容器。 我不知道哪里错了。 这是我第一次使用烧瓶。

这是我的树

├── docker-compose.yml └── web ├── Dockerfile ├── app.py ├── crawler.py └── requirements.txt 

和代码(app.py)

 from flask import Flask import requests app = Flask(__name__) @app.route('/') def hello_world(): return 'Hello Flask!!' if __name__ == '__main__': app.run(debug = True, host = '0.0.0.0') 

和docker – 撰写

 version: '2' services: web: build: ./web ports: - "5000:5000" volumes: - ./web:/code 

请给我一些build议。 先谢谢你。

在debugging模式下,Flask支持代码重新加载,就像您已经完成的一样。 问题是应用程序正在容器上运行,并将其与您正在开发的真实源代码隔离。 无论如何,你可以在运行的容器和主机之间共享你docker-compose.yaml卷,如下所示:

这是docker-compose.yaml

 version: "3" services: web: build: ./web ports: ['5000:5000'] volumes: ['./web:/app'] 

在这里Dockerfile

 FROM python:alpine EXPOSE 5000 WORKDIR app COPY * /app/ RUN pip install -r requirements.txt CMD python app.py 

我设法实现瓶子自动重新加载泊坞窗使用docker-compose与以下configuration:

 version: "3" services: web: build: ./web entrypoint: - flask - run - --host=0.0.0.0 environment: FLASK_DEBUG: 1 FLASK_APP: ./app.py ports: ['5000:5000'] volumes: ['./web:/app'] 

您必须在Docker撰写文件中手动指定环境variables和入口点以实现自动重新加载。