Postgres通过docker运行,初始化脚本后不持久化数据



我第一次使用docker来设置我的团队可以使用的测试数据库。在运行我的docker-compose文件后,我在DBeaver上获得了一些数据。我面临的问题是,我的数据库没有出现在DBeaver(随着相关的模式和表,我也创建/填充在我的初始化sql脚本)。

这是我的docker-compose.yml

version: "3"
services:
test_database:
image: postgres:latest
build:
context: ./
dockerfile: Dockerfile
restart: always
ports:
- 5432:5432
environment:
- POSTGRES_USER=dev
- POSTGRES_PASSWORD=test1234
- POSTGRES_DB=testdb
container_name: test_database

在这里,我指定了我希望它用于构建的docker文件。下面是dockerfile:

# syntax = docker/dockerfile:1.3
FROM postgres:latest
ADD test_data.tar .
COPY init_test_db.sql /docker-entrypoint-initdb.d/

现在,当我运行docker-compose build和docker-compose up时,我可以通过日志看到我的SQL命令(CREATE, COPY等)确实被执行了,并且确实添加了行。但是当我通过DBeaver连接到这个实例时,我根本看不到这个。事实上,唯一的数据库是默认的Postgres数据库,即使通过日志说我连接到test_database。

我遵循了一些其他的解决方案,也使用了docker volume prune,但这并没有影响任何东西(我读了一些关于清理卷的解决方案,在那一点上,我也有volumes: /tmp:/tmp)。什么好主意吗?

哇,这根本不是错误。我所要做的就是在DBeaver上进行连接设置,并在Postgres选项卡下检查"显示所有数据库"。希望这能帮助到一些人:)

最新更新