【发布时间】:2023-04-05 16:39:01
【问题描述】:
我有一个在 docker 容器中运行的 Flask 应用程序 + Gunicorn。我在另一个容器中也有 Nginx,并且想提供静态文件(例如 Flask 应用程序的静态文件夹中的 js 文件),为此我必须创建卷并将其附加到静态卷。
当我创建卷然后运行 dockerized 应用程序(Flask + Gunicorn)时没有问题,js 文件是最新的。
然后我从 Github 更新应用程序(执行git pull projectname,然后执行docker build -t myapp .,然后我得到一个问题,即卷中的文件仍然相同。注意:这不是客户端浏览器问题,js 文件没有更改在卷中。
这个问题与 Ngnix 无关,因为它发生在 Ngnix 不提供静态文件时(我还没有在 config 中设置选项,现在它只提供普通请求)。
我找到了以下解决问题的方法:
- 停止使用volume的容器(现在只有Flask + Gunicorn app,Nginx还没有使用volume):
docker rm -f appname_container - 删除卷:```docker volume rm flask_static_files_volume_name``
- 重新创建卷:
docker volume create flask_static_files_volume_name - 然后再次运行 Flask 应用程序:
docker run ... appname_container
通过 4 个步骤,卷中填充了所有文件的更新版本。我看到正确的 js 文件版本。
每次更新项目时,我都必须执行这些步骤。据我了解,在容器重启后维护文件是正确的卷行为,但是有没有更好的方法来解决这个问题?
【问题讨论】:
标签: python-3.x docker nginx flask