我有一个docker compose文件,看起来像:

版本:“3”
服务:
Redis:
图片:'redis:3.2.7'
#命令:redis-server --requirepass redispass

postgres:
图片:postgres:9.6
端口:
-“5432:5432”
环境:
-POSTGRES_USER =气流
-POSTGRES_PASSWORD =气流
-POSTGRES_DB =气流
#-PGDATA = / var / lib / postgresql / data

网络服务器:
图片:气流:显影
依赖于取决于:
-postgres

端口:
-“8080:8080”

命令:
- 网络服务器

运行docker-compose up后,我看到所有服务都已启动,并且看起来运行良好。我的webserver服务使用以下sqlalchemy连接字符串连接到postgres:postgresql+psycopg2://airflow:airflow@postgres/airflow
每当我杀死合成文件(使用ctrl-cdocker-compose stop)然后重新启动它时,postgres中的数据似乎仍然存在。我认为它仍然存在的原因是因为我的Web服务器从上一个 session 中的数据开始。

我阅读了postgres docker image的文档,并找到了PGDATA环境变量。我试图强行将其设置为默认值(如docker compose文件中的注释行所示,但这无济于事。我不确定如何调试容器为何在容器启动之间数据似乎仍然存在。

如何强制我的postgres容器在每次新的初始化时重新开始?

最佳答案

您的数据得以保留,因为您没有销毁postgres容器。您使用的docker-compose stop仅使容器休眠。请改用docker-compose down。它会完全破坏容器(但不会破坏图像)。

09-26 21:28
查看更多