如何使用docker主机挂载正确重新加载Flask?

2024-03-28 16:39:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我有以下flask应用程序和docker撰写文件

---
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)

当前将“更改我”更改为“已更改”,我看到“更改我”输出

在第三次更改中,我将看到“已更改”


Tags: 文件dockerpyimageimportapp应用程序flask
1条回答
网友
1楼 · 发布于 2024-03-28 16:39:01

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

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

2:装载目标目录而不是单个文件

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

4:安装Werkzeug看门狗。这是一个性能更高的基于inotify的侦听器,如果系统上安装了flask,它将由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

requirements.txt

watchdog==0.9.0
Werkzeug==0.15.2

相关问题 更多 >