PostgreSQL数据库部署linux服务器流程

PostgreSQL数据库部署linux服务器流程

一、配置需求

1. 系统要求

一台装了 Docker 的服务器

该服务器能与本地win电脑ping通

操作系统:Ubuntu 22.04(推荐)

2. 资源需求

PostgreSQL 15.4 镜像(Docker官方仓库)

国内的能用来拉取镜像的docker镜像源

  1. 预备配置参数

|------------|-----------|
| 参数 | |
| 端口 | 5432 |
| 用户名 | postgres |
| 密码 | postgres |
| 默认数据库 | postgres |

二、大概流程简述

拉取官方 PostgreSQL 镜像

创建并启动容器

配置数据持久化存储

设置数据库用户凭证

验证数据库连接

三、验证环节

1. 验证 Docker 环境

复制代码
# 检查 Docker 是否安装

sudo docker --version

(如图所示结果)

显示类似 Docker version 24.03.1, build xxxx 就说明已安装。

复制代码
# 检查 Docker 服务是否运行

sudo systemctl status docker

(如图所示结果)

看到 active (running) 就正常。

退出查看:ctrl+c

2. 验证镜像源是否能进行拉取镜像

复制代码
# 拉取测试镜像

sudo docker pull hello-world

(失败结果如图所示)

(成功结果如图所示)

能正常运行就说明镜像源没问题。

如果拉取失败,配置国内 Docker 镜像加速器

创建文件

复制代码
sudo mkdir -p /etc/docker

sudo vim /etc/docker/daemon.json

配置加速镜 清空文件内容,写入以下 JSON(注意格式)

开始编写按:i

复制代码
{

"registry-mirrors": [

"https://docker.m.daocloud.io",

"https://docker.1ms.run",

"https://docker.anyhub.us.kg"

],

"dns": ["223.5.5.5", "114.114.114.114"]

}

退出编写+保存+退出:esc+:wq

应用配置

复制代码
sudo systemctl daemon-reload

重启docker

复制代码
sudo systemctl restart docker

配置成功后,重新执行上面的拉取命令测试即可。

四、具体流程

1. 拉取 PostgreSQL 镜像

复制代码
# 拉取官方 PostgreSQL 15.4 镜像

sudo docker pull postgres:15.4

(如图所示结果)拉取时间实测需要12分钟

复制代码
# 验证镜像是否下载成功

sudo docker images postgres:15.4

(成功结果如图所示)

2. 创建数据持久化目录

复制代码
# 创建存储目录

sudo mkdir -p /opt/postgresql/data

# 设置权限(必须)

sudo chown -R 999:999 /opt/postgresql/data

3. 创建并启动 PostgreSQL 容器

复制代码
# 一键创建并启动容器

sudo docker run -d \

--name postgres_db \

--restart unless-stopped \

-e POSTGRES_USER=postgres \

-e POSTGRES_PASSWORD=postgres \

-e POSTGRES_DB=postgres \

-p 5432:5432 \

-v /opt/postgresql/data:/var/lib/postgresql/data \

postgres:15.4

(成功结果如图所示)

复制代码
# 查看容器是否启动成功

sudo docker ps | grep postgres_db

(成功结果如图所示)

看到输出就说明启动成功了。

4. 验证数据库连接

复制代码
# 进入容器内部

sudo docker exec -it postgres_db psql -U postgres

(成功结果如图所示)

进入后执行以下命令验证

复制代码
#版本显示

SELECT version();

(成功结果如图所示)

退出查看:ctrl+c

数据库列表

复制代码
\l

(成功结果如图所示)

退出查看:ctrl+c

退出数据库

复制代码
\q

5. 配置远程访问

如果需要从容器外连接数据库:

复制代码
# 修改配置允许远程连接

sudo docker exec -it postgres_db bash -c "echo \"host all all 0.0.0.0/0 md5\" >> /var/lib/postgresql/data/pg_hba.conf"

# 重启容器生效

sudo docker restart postgres_db

五、常用管理命令

复制代码
# 启动容器

sudo docker start postgres_db

# 停止容器

sudo docker stop postgres_db

# 查看容器日志

sudo docker logs -f postgres_db

# 进入容器 bash

sudo docker exec -it postgres_db bash

六、验证连接

1. 服务器本地验证

复制代码
# 进入容器内部连接数据库

sudo docker exec -it postgres_db psql -U postgres

(成功结果如图所示)

2. Windows 本地连接

使用 Python 测试连接

进入虚拟环境,安装 psycopg2 库:

复制代码
pip install psycopg2-binary

(成功结果如图所示)

创建测试脚本:

复制代码
#text01.py

import psycopg2

try:

conn = psycopg2.connect(

host="192.168.1.128",

port="5432",

database="postgres",

user="postgres",

password="postgres"

)

print("连接成功!")

cursor = conn.cursor()

cursor.execute("SELECT version();")

print("PostgreSQL 版本:", cursor.fetchone())

cursor.close()

conn.close()

except Exception as e:

print("连接失败:", e)

⚠️ 注意:请将代码中的 192.168.1.128 替换为您自己的服务器 IP 地址。

(成功结果如图所示)

运行脚本:

复制代码
python test01.py

(成功结果如图所示)

看到"连接成功!"就说明连接正常。

相关推荐
小则又沐风a1 小时前
深入了解进程概念 第二章
java·linux·服务器·前端
曲幽1 小时前
你的Agent API还在裸奔?从认证到沙箱,我用FastAPI搭了几道防线
python·fastapi·web·security·jwt·oauth2·limit·sandbox·ai agent
donecoding1 小时前
用了多年 nvm,我终于找到 Python 的版本管理「答案」:uv
python·node.js·前端工程化
彳亍1011 小时前
mysql如何通过mysqldump备份视图与触发器_使用相关参数
jvm·数据库·python
cgsthtm1 小时前
openEuler release 24.03 (LTS-SP2) 安装 docker
docker·systemctl·dnf·openeuler 24.03
重生之小比特1 小时前
【MySQL 数据库】用户管理与权限控制
android·数据库·mysql
lzh200409191 小时前
手搓一个简易 Linux 进程池:巩固进程知识
linux·c++
ZC跨境爬虫1 小时前
跟着 MDN 学 HTML day_60:(表单与按钮技能测试实战)
服务器·前端·javascript·数据库·ui·html
深度学习lover1 小时前
<数据集>yolo 缆绳识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·缆绳识别