gpt4 book ai didi

python - 如何让 flask 使用 docker 主机安装正确重新加载?

转载 作者:行者123 更新时间:2023-12-02 19:57:53 25 4
gpt4 key购买 nike

如何让 flask 在 docker 卷主机安装中正确重新加载?

我有以下 flask 应用程序和 docker-compose 文件

---
services:

flask:
image: domain/my-flask:latest
environment:
- FLASK_DEBUG=1
volumes:
- "server.py:/app/server.py"

使用 hello world flask 应用程序:
from flask import Flask
import os

app = Flask(__name__)

print('Change Me')

@app.route('/')
def hello_world():
return 'Hello, World!'

app.run(host='0.0.0.0', port=80)

目前将“改变我”更改为“已改变”,我看到“改变我”输出。

在第三次更改时,我会看到“已更改”。

最佳答案

首先要了解的是,当您从主机中的单个文件创建卷挂载到容器中时,您实际上是将文件的显式 inode 映射到容器。许多编辑器(例如 vim 或 pycharm)使用交换文件将工作文件复制到目标文件之上——更改它们的 inode id。为了获得最一致的结果,建议使用以下方法:

1:在 vim 或 pycharm 等编辑器中关闭“使用安全写入”。

2:挂载一个目标目录而不是单个文件。

3:设置 ENV 变量:PYTHONUNBUFFERED=1(这指示 Docker 不要在标准输出缓冲区中缓冲 Python 的输出)

4:安装 Werkzeug 看门狗。这是一个性能更高的基于 inotify 的监听器,如果它安装在系统上,它将由 flask 运行。

docker-compose.yml

---
services:

flask:
image: domain/my-flask:latest
environment:
- PYTHONUNBUFFERED=1
- FLASK_ENV=development
- FLASK_DEBUG=1
volumes:
- ".:/app" #you can replace '.' with a full dir path

要求.txt
watchdog==0.9.0
Werkzeug==0.15.2

关于python - 如何让 flask 使用 docker 主机安装正确重新加载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56654833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com