feat: v1.0.0 祀梦笔记:从 0 到 1 的数字化花园建设
This commit is contained in:
69
docs/notes/ops/docker/Postgres.md
Normal file
69
docs/notes/ops/docker/Postgres.md
Normal file
@@ -0,0 +1,69 @@
|
||||
---
|
||||
title: 使用 Docker 部署 Postgres
|
||||
createTime: 2025/12/25 10:52:34
|
||||
permalink: /ops/docker/db/postgres/
|
||||
---
|
||||
|
||||
## 在 Ubuntu 上部署 Postgres 实例
|
||||
|
||||
拉取 Postgres 镜像:
|
||||
```bash
|
||||
docker pull postgres
|
||||
```
|
||||
|
||||
> [!IMPORTANT] 注意事项
|
||||
> 从 **PostgreSQL 18+** 版本开始,官方镜像建议将数据目录挂载到 `/var/lib/postgresql` 而非 `/var/lib/postgresql/data`。如果你是从旧版本升级镜像,直接挂载旧目录会导致启动失败。
|
||||
|
||||
### 极简运行 Postgres 实例
|
||||
```bash
|
||||
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 数据:
|
||||
```bash
|
||||
mkdir -p /data/postgres/
|
||||
```
|
||||
运行 Postgres 容器:
|
||||
```bash
|
||||
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` 格式数据,建议固定版本:
|
||||
```bash
|
||||
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 容器:
|
||||
```bash
|
||||
docker exec -it postgres psql -U postgres
|
||||
```
|
||||
解析:
|
||||
- `docker exec -it postgres psql -U postgres`:进入 Postgres 容器的 psql 命令行界面,使用 postgres 用户进行登录。
|
||||
修改 postgres 用户密码为 postgres:
|
||||
```sql
|
||||
ALTER USER postgres PASSWORD 'postgres';
|
||||
```
|
||||
Reference in New Issue
Block a user