Files
SiMengWebSite_Notes/docs/notes/ops/docker/Postgres.md
祀梦 d08ce7e3e7 docs(docker): 更新文档结构并添加Postgres部署指南
重构docker文档目录结构,将数据库相关文档移动到db子目录,其他服务文档移动到other子目录
添加Postgres部署文档,包含基本运行和持久化配置方案
2025-12-30 14:40:56 +08:00

2.2 KiB
Raw Blame History

title, createTime, permalink
title createTime permalink
使用 Docker 部署 Postgres 2025/12/25 10:52:34 /ops/docker/db/postgres/

在 Ubuntu 上部署 Postgres 实例

拉取 Postgres 镜像:

docker pull postgres

[!IMPORTANT] 注意事项 从 PostgreSQL 18+ 版本开始,官方镜像建议将数据目录挂载到 /var/lib/postgresql 而非 /var/lib/postgresql/data。如果你是从旧版本升级镜像,直接挂载旧目录会导致启动失败。

极简运行 Postgres 实例

docker run --restart=always -itd --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres

解析:

  • --restart=always:容器重启时自动启动。
  • -itd:交互式模式运行容器,后台模式。
  • --name postgres:为容器命名为 postgres。
  • -p 5432:5432:将主机的 5432 端口映射到容器的 5432 端口。
  • -e POSTGRES_PASSWORD=postgres:设置 Postgres 数据库的密码为 postgres。
  • postgres:使用 Postgres 镜像。

配置 Postgres 持久化实例

方案一:使用最新版本 (18+)

创建一个目录用于存储 Postgres 数据:

mkdir -p /data/postgres/

运行 Postgres 容器:

docker run --restart=always -itd \
  --name postgres \
  -p 5432:5432 \
  -e POSTGRES_PASSWORD=postgres \
  -v /data/postgres/:/var/lib/postgresql \
  postgres

方案二:固定使用旧版本 (如 17)

如果你有现存的 /var/lib/postgresql/data 格式数据,建议固定版本:

docker run --restart=always -itd \
  --name postgres \
  -p 5432:5432 \
  -e POSTGRES_PASSWORD=postgres \
  -v /data/postgres/:/var/lib/postgresql/data \
  postgres:17

解析:

  • -v /data/postgres/:/var/lib/postgresql/data:将主机的 /data/postgres/ 目录挂载到容器的 /var/lib/postgresql/data 目录,用于持久化存储数据。

进入容器之后修改 postgres 用户密码

进入 Postgres 容器:

docker exec -it postgres psql -U postgres

解析:

  • docker exec -it postgres psql -U postgres:进入 Postgres 容器的 psql 命令行界面,使用 postgres 用户进行登录。 修改 postgres 用户密码为 postgres
ALTER USER postgres PASSWORD 'postgres';