我有一个看似如下的docker compose文件:
version: "3" services: redis: image: 'redis:3.2.7' # command: redis-server --requirepass redispass postgres: image: postgres:9.6 ports: - "5432:5432" environment: - POSTGRES_USER=airflow - POSTGRES_PASSWORD=airflow - POSTGRES_DB=airflow # - PGDATA=/var/lib/postgresql/data webserver: image: airflow:develop depends_on: - postgres ports: - "8080:8080" command: - webserver
运行docker-compose up
后,我看到所有服务都已启动,看起来运行良好。我的webserver
服务使用以下sqlalchemy连接字符串连接到postgres:postgresql+psycopg2://airflow:airflow@postgres/airflow
每当我杀死合成(使用ctrl-c
或docker-compose stop
)然后重新启动它时,postgres中的数据似乎仍然存在。我认为它持续存在的原因是因为我的网络服务器从上一个会话的数据开始。
我阅读了postgres docker image的文档,找到了PGDATA
环境变量。我试图强制将其设置为默认值(如我的docker compose文件中的注释行所示,但这没有帮助。我不知道如何调试为什么数据似乎在容器启动之间持续存在。
如何强制我的postgres容器在每次初始化时重启?
答案 0 :(得分:3)
您的数据已保留,因为您没有销毁postgres
容器。你使用docker-compose stop
只有休眠容器。请改用docker-compose down
。它完全破坏了容器(但不是图像)。