如何强制 postgres docker 容器从新数据库开始

Pay*_*ian 2 postgresql docker docker-compose

我有一个 docker compose 文件,如下所示:

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

    邮局:
        图片: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 中的数据似乎仍然存在。我相信它仍然存在的原因是因为我的网络服务器从上一个会话的数据开始。

我阅读了postgres docker 图像的文档并找到了PGDATA环境变量。我试图将它强制设置为默认值(如我的 docker compose 文件中的注释行所示,但这没有帮助。我不知道如何调试为什么数据似乎在容器启动之间持续存在。

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

Buk*_*gey 6

你的数据被持久化是因为你没有销毁postgres容器。您使用docker-compose stopwhich 只休眠容器。使用docker-compose down来代替。它完全破坏容器(但不破坏图像)。