【发布时间】:2023-03-09 16:20:01
【问题描述】:
我将主机和容器之间的体积用于烧瓶应用程序。我的 docker-compose 的 web 部分如下所示:
web:
restart: on-failure
container_name: web
build:
context: "."
dockerfile: "docker/Dockerfile.web"
ports:
- 5000:5000
volumes:
- database:/var/run/postgresql
- .:/usr/src/app
volumes:
database:
这是我的 Dockerfile:
FROM python
WORKDIR /usr/src/app
COPY . .
RUN pip install --no-cache-dir -r requirements.txt
CMD ["python", "./sources/app.py"]
我认为我的卷创建得很好,因为当我从主机创建和更新 app.py 时,容器中的 app.py 也会更新。 但问题是当我从浏览器重新加载页面时,内容尚未更新。
当我做docker volume list 时,我得到了这个:
DRIVER VOLUME NAME
local b26d14737c65ba4d26c3751ae898883e9062c4894a5fd31b191ffd9ded7f1d50
local web-app_database
b26d14 的体积是多少?我不认为它是用 docker-compose 创建的。运行docker volume inspect 后返回:
[
{
"CreatedAt": "2020-03-21T10:41:19Z",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/b26d14737c65ba4d26c3751ae898883e9062c4894a5fd31b191ffd9ded7f1d50/_data",
"Name": "b26d14737c65ba4d26c3751ae898883e9062c4894a5fd31b191ffd9ded7f1d50",
"Options": null,
"Scope": "local"
}
]
我必须让它工作的唯一方法是重新启动容器。
我找到了这篇文章:link,但它没有解决我的问题。
Docker 版本:
- Docker 版本 19.03.8,构建 afacb8b
- docker-compose 版本 1.25.4,构建 8d51620a
有什么想法吗?
感谢您的回复,祝您有美好的一天。
【问题讨论】:
-
当您的应用程序代码更改时,您是否要重新启动您的容器?
-
当我在主机 app.py 中进行代码更改时,我在容器 app.py 中得到了相同的更改。无需重新启动任何东西。但是当我从浏览器重新加载页面时,我看不到任何变化。
-
听起来像是您的应用程序响应新内容的问题,而不是 docker 问题。
-
也许吧。我试图在没有缓存的情况下运行该应用程序。 Flask 有一个禁用它的选项。但我仍然有问题。你看过我链接的文章吗?
-
尝试使用
ENV FLASK_ENV=development在Dockerfile中设置FLASK_ENV。这将使应用程序在发生更改时重新加载。
标签: python docker flask docker-compose docker-volume