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

新手上路,请多包涵

我希望我的烧瓶服务器能够检测代码的变化并自动重新加载。我在 docker 容器上运行它。每当我更改某些内容时,我都必须重新构建容器。我不知道哪里出了问题。这是我第一次使用烧瓶。

这是我的树

├── 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-compose

 version: '2'
services:

  web:
    build: ./web
    ports:
     - "5000:5000"
    volumes:
     - ./web:/code

请给我一些建议。先感谢您。

原文由 coucou 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 371
2 个回答

正如您已经完成的那样,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

原文由 lepsch 发布,翻译遵循 CC BY-SA 3.0 许可协议

我设法使用带有以下配置的 docker-compose 在 docker 中实现 flask 自动重新加载:

 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 compose 文件中手动指定环境变量和入口点才能实现自动重新加载。

原文由 Radu Cosnita 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题