【问题标题】:Docker volume for persisting PostgreSQL database data用于持久化 PostgreSQL 数据库数据的 Docker 卷
【发布时间】:2020-04-06 21:43:53
【问题描述】:

我正在我的 MacOS 机器上使用 Docker Compose 启动一个 PostgreSQL 服务器:

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

但是,如果我对“默认”postgres 数据库进行更改(例如,创建一个新表),该更改将成功保存在 Docker 卷中(我重新启动容器并保留在那里。)

如你所见,我有这个卷映射:

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

此映射是否适用于 PostgreSQL 服务器内的所有数据库?

【问题讨论】:

  • MacOS。 docker stop postgres_db_1

标签: postgresql docker docker-compose docker-volume


【解决方案1】:

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

其实存储位置可以通过服务构建阶段的PGDATA环境变量来控制。根据 Postgres documentationPGDATA 与 Docker 本身无关:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-01
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 2021-07-13
    • 1970-01-01
    相关资源
    最近更新 更多