我有一个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-c
或docker-compose stop
)然后重新启动它时,postgres中的数据似乎仍然存在。我认为它仍然存在的原因是因为我的Web服务器从上一个 session 中的数据开始。
我阅读了postgres docker image的文档,并找到了PGDATA
环境变量。我试图强行将其设置为默认值(如docker compose文件中的注释行所示,但这无济于事。我不确定如何调试容器为何在容器启动之间数据似乎仍然存在。
如何强制我的postgres容器在每次新的初始化时重新开始?
最佳答案
您的数据得以保留,因为您没有销毁postgres
容器。您使用的docker-compose stop
仅使容器休眠。请改用docker-compose down
。它会完全破坏容器(但不会破坏图像)。