我正在MacOS机器中使用Docker Compose启动PostgreSQL服务器:
#wheel div.sec {
pointer-events: none;
}
#wheel div.sec .fa,
#wheel div.sec .fainv {
pointer-events: all;
}
当我使用数据库GUI客户端连接到服务器并创建新数据库时,它可以正常工作。但是,如果我重新启动容器,该数据库将不再存在。
version: '3.1'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_PASSWORD: example
ports:
- 5432:5432
volumes:
- ./dbdata:/var/lib/postgresql/data
但是,如果我在“默认” $ docker stop postgres_db_1
$ docker start postgres_db_1
数据库上进行了更改(例如,创建一个新表),则该更改将成功地持久保存在Docker卷中(我重新启动容器并将其保留在那里)。
如您所见,我具有此体积映射:
postgres
此映射是否适用于PostgreSQL服务器内部的所有数据库?
答案 0 :(得分:0)
默认路径Promise.all
指的是Postgres数据的存储位置。但是,如果您使用文件系统挂载点,则documentation建议使用子目录,例如/var/lib/postgresql/data
作为数据。
实际上,可以在服务的构建阶段通过/var/lib/postgresql/data/pgdata
环境变量来控制存储位置。根据Postgres documentation,PGDATA
与Docker本身无关:
传统上,数据库使用的配置和数据文件 群集一起存储在群集的数据目录中, 通常称为PGDATA(在环境名称之后 可用于定义它的变量)。 PGDATA的通用位置 是
PGDATA
。