docker 中的 MacOS Postgres 在 运行 docker-compose down 后未被删除
MacOS Postgres in docker is not getting deleted after running docker-compose down
我正在 Docker-compose 中启动一个 Postgres 数据库,它第一次运行良好。我想测试一些东西所以我 运行
docker-compose down
经过我的修改。我运行docker-compose up
。这一次,我不断收到一条消息说
PostgreSQL Database directory appears to contain a database; Skipping initialization
我的docker-compose如下:
postgres_db:
image: postgres:14.1
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=${BP_ADMIN_PASSWORD}
volumes:
- ./admin/${BP_ENV:-dev}/database:/docker-entrypoint-initdb.d
- ./data/postgres:/var/lib/postgresql/data
command: postgres -c logging_collector=on -c log_rotation_age=1d -c log_directory=/mnt/log -c
ports:
- "5432:5432"
我运行docker-compose down --volumes
试图摆脱一切,但没有奏效。
然后,我删除了本地驱动器上的整个 ./data/postgres
文件夹,但仍然失败。之后,我注释掉了- ./data/postgres:/var/lib/postgresql/data
,还是不行。
如何删除现有数据库?
运行 docker-compose down --volumes
只会删除 Docker 个卷。您没有使用卷;您正在使用绑定挂载,其中您正在容器内挂载主机目录:
volumes:
- ./admin/${BP_ENV:-dev}/database:/docker-entrypoint-initdb.d
- ./data/postgres:/var/lib/postgresql/data
删除该数据的方法是使用 rm
,如:
rm -rf ./data/postgres/*
如果您想为数据库目录使用 Docker 卷,则如下所示:
version: "3"
services:
postgres_db:
image: postgres:14.1
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=${BP_ADMIN_PASSWORD}
volumes:
- ./admin/${BP_ENV:-dev}/database:/docker-entrypoint-initdb.d
- pgdata:/var/lib/postgresql/data
command: postgres -c logging_collector=on -c log_rotation_age=1d -c log_directory=/mnt/log -c
ports:
- "5432:5432"
volumes:
pgdata:
在这种情况下,运行 docker-compose down -v
(或 --volumes
,如果您
prefer) 会删除数据库卷。
我正在 Docker-compose 中启动一个 Postgres 数据库,它第一次运行良好。我想测试一些东西所以我 运行
docker-compose down
经过我的修改。我运行docker-compose up
。这一次,我不断收到一条消息说
PostgreSQL Database directory appears to contain a database; Skipping initialization
我的docker-compose如下:
postgres_db:
image: postgres:14.1
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=${BP_ADMIN_PASSWORD}
volumes:
- ./admin/${BP_ENV:-dev}/database:/docker-entrypoint-initdb.d
- ./data/postgres:/var/lib/postgresql/data
command: postgres -c logging_collector=on -c log_rotation_age=1d -c log_directory=/mnt/log -c
ports:
- "5432:5432"
我运行docker-compose down --volumes
试图摆脱一切,但没有奏效。
然后,我删除了本地驱动器上的整个 ./data/postgres
文件夹,但仍然失败。之后,我注释掉了- ./data/postgres:/var/lib/postgresql/data
,还是不行。
如何删除现有数据库?
运行 docker-compose down --volumes
只会删除 Docker 个卷。您没有使用卷;您正在使用绑定挂载,其中您正在容器内挂载主机目录:
volumes:
- ./admin/${BP_ENV:-dev}/database:/docker-entrypoint-initdb.d
- ./data/postgres:/var/lib/postgresql/data
删除该数据的方法是使用 rm
,如:
rm -rf ./data/postgres/*
如果您想为数据库目录使用 Docker 卷,则如下所示:
version: "3"
services:
postgres_db:
image: postgres:14.1
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=${BP_ADMIN_PASSWORD}
volumes:
- ./admin/${BP_ENV:-dev}/database:/docker-entrypoint-initdb.d
- pgdata:/var/lib/postgresql/data
command: postgres -c logging_collector=on -c log_rotation_age=1d -c log_directory=/mnt/log -c
ports:
- "5432:5432"
volumes:
pgdata:
在这种情况下,运行 docker-compose down -v
(或 --volumes
,如果您
prefer) 会删除数据库卷。