用于持久化PostgreSQL数据库数据的Docker卷

用于持久化PostgreSQL数据库数据的Docker卷,postgresql,docker,docker-compose,docker-volume,Postgresql,Docker,Docker Compose,Docker Volume,我正在MacOS机器上启动带有Docker Compose的PostgreSQL server: version: '3.1' services: db: image: postgres restart: always environment: POSTGRES_PASSWORD: example ports: - 5432:5432 volumes: - ./dbdata:/var/lib/postgresql/

我正在MacOS机器上启动带有Docker Compose的PostgreSQL server:

version: '3.1'

services:
  db:
    image: postgres
    restart: always
    environment:
      POSTGRES_PASSWORD: example
    ports:
      - 5432:5432
    volumes:
      - ./dbdata:/var/lib/postgresql/data
当我使用数据库GUI客户端连接到服务器并创建新数据库时,它工作正常。但是,如果我重新启动容器,数据库就不存在了

$ docker stop postgres_db_1
$ docker start postgres_db_1
但是,如果我对“default”
postgres
数据库进行了更改(例如,创建一个新表),则该更改将成功地保留在Docker卷中(我重新启动容器并将其保留在那里)

如您所见,我有以下体积映射:

./dbdata:/var/lib/postgresql/data

此映射是否适用于PostgreSQL server内部的所有数据库?

默认路径
/var/lib/PostgreSQL/data
指存储Postgres数据的位置。但是,如果您使用的是文件系统挂载点,则建议使用子目录,例如,
/var/lib/postgresql/data/pgdata
作为数据挂载点

实际上,存储位置可以通过服务构建阶段的
PGDATA
环境变量进行控制。根据Postgres的说法,
PGDATA
与Docker本身无关:

传统上,数据库使用的配置和数据文件 集群一起存储在集群的数据目录中, 通常称为PGDATA(在环境名称之后 可用于定义它的变量)。PGDATA的公共位置 是
/var/lib/pgsql/data


默认路径
/var/lib/postgresql/data
是指存储Postgres数据的位置。但是,如果您使用的是文件系统挂载点,则建议使用子目录,例如,
/var/lib/postgresql/data/pgdata
作为数据挂载点

实际上,存储位置可以通过服务构建阶段的
PGDATA
环境变量进行控制。根据Postgres的说法,
PGDATA
与Docker本身无关:

传统上,数据库使用的配置和数据文件 集群一起存储在集群的数据目录中, 通常称为PGDATA(在环境名称之后 可用于定义它的变量)。PGDATA的公共位置 是
/var/lib/pgsql/data


马科斯。使用
docker stop postgres\u db\u 1
MacOS。使用
docker stop postgres\u db\u 1