Docker方式安装PostgreSQL

安装脚本

# 创建数据目录
mkdir -p /data/docker/postgres/data
# 创建镜像
docker run -d --name postgres -p 15432:5432 --restart=always \
-e TZ=Asia/Shanghai \
-e POSTGRES_PASSWORD=********* \
-e POSTGRES_HOST_AUTH_METHOD=md5 \
-v /etc/localtime:/etc/localtime:ro \
-v /data/docker/postgres/data:/var/lib/postgresql/data \
postgres:13.13-bullseye
# 放开访问端口
firewall-cmd --zone=public --add-port=15432/tcp --permanent && firewall-cmd --reload

命令解释

创建数据目录

mkdir -p /data/docker/postgres/data
​​mkdir -p​​:递归创建目录,如果父目录不存在则一并创建
​​/data/docker/postgres/data​​:宿主机上的持久化存储目录
​​目的​​:确保数据库文件在容器重启或重建后不会丢失

运行 PostgreSQL 容器

docker run -d \                    # 后台运行
  --name postgres \                # 容器命名为"postgres"
  -p 15432:5432 \                  # 端口映射
  --restart=always \               # 自动重启策略
  -e TZ=Asia/Shanghai \            # 时区设置
  -e POSTGRES_PASSWORD=********* \ # 数据库密码
  -e POSTGRES_HOST_AUTH_METHOD=md5 \ # 认证方式
  -v /etc/localtime:/etc/localtime:ro \ # 时区文件挂载
  -v /data/docker/postgres/data:/var/lib/postgresql/data \ # 数据目录挂载
  postgres:13.13-bullseye          # 使用的镜像

关键参数详解:
​​(1)端口映射 -p 15432:5432​​
将容器内部的 PostgreSQL 默认端口 5432 映射到宿主机的 15432 端口
​​为什么用 15432?​​ 避免与宿主机上可能存在的 PostgreSQL 服务冲突
​​(2)​​环境变量配置​​
​​TZ=Asia/Shanghai​​:设置容器时区为上海时间(UTC+8)
​​POSTGRES_PASSWORD=*********​​:设置超级用户(postgres)的密码
​​POSTGRES_HOST_AUTH_METHOD=md5​​:设置客户端认证方式为 md5 密码验证
​​(3)​​卷挂载​​
​​-v /etc/localtime:/etc/localtime:ro​​:
将宿主机的时区文件挂载到容器内
:ro表示只读,防止容器修改宿主机文件
​​-v /data/docker/postgres/data:/var/lib/postgresql/data​​:
将宿主机目录挂载到容器的数据库存储位置
实现数据持久化(容器删除后数据不丢失)
​​(4)​​镜像选择 postgres:13.13-bullseye​​
使用 PostgreSQL 13.13 版本,基于 Debian Bullseye 的基础镜像,避免使用 latest 标签导致意外升级,13.13 是一个长期支持(LTS)版本,稳定性高

防火墙配置

firewall-cmd --zone=public --add-port=15432/tcp --permanent && firewall-cmd --reload
​​firewall-cmd​​:firewalld 防火墙管理工具
​​–zone=public​​:针对 public 区域设置规则
​​–add-port=15432/tcp​​:开放 TCP 协议的 15432 端口
​​–permanent​​:使规则永久生效(重启后仍有效)
​​&& firewall-cmd --reload​​:立即重新加载防火墙配置

修改默认密码

ALTER USER postgres WITH PASSWORD 'FNahL#i1Ymd&93vadDs';

安全注意事项

(1)​​密码安全​​:
示例中的 *********应替换为强密码
建议使用密码管理工具生成和存储密码
​​(2)​​访问控制​​:
默认配置允许任何主机连接
生产环境应配置 pg_hba.conf限制访问IP
​​​​(3)备份策略​​:
定期备份 /data/docker/postgres/data目录
考虑使用 pg_dump进行逻辑备份
​​​​(4)​​版本选择​​:
PostgreSQL 13 支持到 2025年11月
如需更长支持周期,可考虑 PostgreSQL 15(支持到2027年)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angushine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值