首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一行一行教你搞定PostgreSQL咸鱼版起航!Docker+AlmaLinux实战,DataGrip轻松连

一行一行教你搞定PostgreSQL咸鱼版起航!Docker+AlmaLinux实战,DataGrip轻松连

作者头像
IT咸鱼
发布2025-07-26 12:43:24
发布2025-07-26 12:43:24
19800
代码可运行
举报
运行总次数:0
代码可运行

(一张简洁明了的架构图,展示 Docker Compose 管理的 PostgreSQL 容器与宿主 AlmaLinux 的关系,以及 DataGrip 连接容器的路径。类似 的微服务架构图风格,但简化到只有 Docker Engine, PostgreSQL Container, AlmaLinux Host, DataGrip Client 这几个核心元素,用箭头标明连接关系:DataGrip -> Docker Port -> PostgreSQL Container。图片标注:PostgreSQL Docker 部署简易架构)

咸鱼为啥选 Docker Compose?

想象一下,以前装数据库,要下载安装包、配环境变量、改配置文件、设权限...一套下来,咸鱼都累成咸鱼干了!Docker Compose 就是咱咸鱼的救星!它让你用一个简单的 YAML 配置文件 (docker-compose.yml),就能定义并启动整个服务(比如数据库)。好处贼多:

  1. 一键部署 & 销毁:想装?一行命令。想删?一行命令。干净利落!
  2. 环境隔离:PostgreSQL 运行在专属“集装箱”(容器)里,不污染你的 AlmaLinux 系统。
  3. 配置即代码:所有配置都在 docker-compose.yml文件里,清晰明了,方便版本管理和重现。
  4. 关系清晰:等下我们写的 YAML 文件,就是定义 PostgreSQL 这个“服务”的说明书,它和 Docker、宿主机的端口映射、数据存储关系都在里面写得明明白白。它们的关系是:Docker Compose 根据你的说明书(YAML),指挥 Docker 引擎去创建并管理 PostgreSQL 容器。容器通过映射的端口暴露服务给 AlmaLinux 主机(进而给外部如DataGrip),通过映射的目录/卷(Volume)在主机上持久化存储数据。

准备工作:给你的 AlmaLinux 装好 Docker 和 Docker Compose

更新系统 (在 AlmaLinux 终端执行):

代码语言:javascript
代码运行次数:0
运行
复制

sudo dnf update -y

安装 Docker (在 AlmaLinux 终端执行):

代码语言:javascript
代码运行次数:0
运行
复制

sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install docker-ce docker-ce-cli containerd.io -y
sudo systemctl start docker
sudo systemctl enabledocker
# 验证安装,看到版本号就OK
docker --version

安装 Docker Compose (在 AlmaLinux 终端执行):

代码语言:javascript
代码运行次数:0
运行
复制

# 下载最新稳定版 (替换 VERSION 为实际版本号,如 v2.27.0)
sudocurl-L"https://github.com/docker/compose/releases/download/VERSION/docker-compose-$(uname-s)-$(uname-m)"-o /usr/local/bin/docker-compose
# 赋予执行权限
sudochmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version

核心步骤:编写我们的“数据库说明书” (docker-compose.yml)

在你的 AlmaLinux 上找个顺眼的地方,比如 ~/postgres-demo,创建这个目录并进入:

代码语言:javascript
代码运行次数:0
运行
复制

mkdir ~/postgres-demo &&cd ~/postgres-demo

创建我们的“圣经”文件 docker-compose.yml

代码语言:javascript
代码运行次数:0
运行
复制

nano docker-compose.yml  # 或者用 vim

把下面这段“咸鱼定制版”配置 一字不差地贴进去,我一行一行给你解释(注意缩进是2个空格或4个空格,保持一致!YAML 很在意这个!):

代码语言:javascript
代码运行次数:0
运行
复制

version:'3.8'# 指定 Compose 文件版本,3.8 是比较新且稳定的
services:# 定义我们要运行的服务列表
postgres:# 服务名,就叫 postgres 吧,好记!
image: postgres:latest  # 使用官方最新的 PostgreSQL 镜像。咸鱼提示:latest 标签会拉取最新稳定版,生产环境建议指定具体版本号如 16
container_name: pg-container # 给容器起个名字,方便管理
environment:# 设置环境变量,非常重要!用来初始化数据库
- POSTGRES_USER=postgresuser # 设置超级用户名,咸鱼你改个自己喜欢的!
- POSTGRES_PASSWORD=YourStrongPassw0rd!# 设置超级用户密码,一定要够强!咸鱼别偷懒!
- POSTGRES_DB=postgresdb     # 初始化时创建的默认数据库名
volumes:# 数据持久化关键!把容器里的数据目录映射到主机目录,这样重启容器数据还在!
- ./pgdata:/var/lib/postgresql/data # 把当前目录下的 pgdata 目录映射到容器里的数据库数据目录
ports:# 端口映射,把容器里的 5432 端口映射到宿主机的 5432 端口。咸鱼注意:主机端口可以改(比如 5433:5432),但容器内端口一般是 5432
-"5432:5432"
restart: unless-stopped # 容器策略:除非手动停止,否则退出就重启(比如服务器重启后)
healthcheck:# (可选但推荐)健康检查,确保数据库真的启动好了
test:["CMD-SHELL","pg_isready -U postgresuser -d postgresdb"]
interval: 10s
timeout: 5s
retries:5

咸鱼白话解释关键点:*image: postgres:latest: 告诉 Docker 去拉取 (pull) 官方的 PostgreSQL 镜像。latest是最新版,省心。想用特定版本?换成postgres:16就行。 *environment: 数据库的“出生证明”! *POSTGRES_USER: 数据库的超级管理员用户名,记牢它! *POSTGRES_PASSWORD: 超级管理员的密码!咸鱼警告:这个密码别用简单的,也别泄露!*POSTGRES_DB: 容器启动时自动创建的这个名字的数据库。 *volumes: - ./pgdata:/var/lib/postgresql/data:数据不丢的秘诀!把容器内 PostgreSQL 存放数据的核心目录 (/var/lib/postgresql/data) 映射到你主机当前目录下的pgdata文件夹。这样,即使你删了容器,只要pgdata文件夹还在,数据就还在!下次启动映射回去,数据就回来了。./表示当前目录 (~/postgres-demo)。 *ports: - "5432:5432":连接数据库的门!左边5432是你 AlmaLinux 主机的端口号(外面访问用),右边5432是 PostgreSQL 容器内部监听的端口(固定是这个)。用 DataGrip 连接时,就填你 AlmaLinux 的 IP 和这个左边的主机端口 (5432)。想换主机端口?比如"65432:5432",那 DataGrip 就填主机端口 65432。 *healthcheck: 让 Docker Compose 知道数据库是不是真准备好了。pg_isready是 PostgreSQL 自带的检查工具。-U-d参数要和你上面设置的用户名、数据库名一致。

  1. 保存并退出编辑器 (在 nano 里按 Ctrl+O回车保存,再按 Ctrl+X退出)。

启动你的咸鱼数据库!

确保你在 ~/postgres-demo目录下 (里面有 docker-compose.yml文件)。

运行 咸鱼起飞命令

代码语言:javascript
代码运行次数:0
运行
复制

docker-compose up -d
  • up: 创建并启动服务。
  • -d: detached模式,后台运行。不加这个参数,你会看到日志输出在前台。

见证奇迹时刻:

  • 第一次运行,Docker 会去下载 (pull) PostgreSQL 镜像,需要点时间(看网速)。
  • 下载完成后,Docker Compose 会根据你的 YAML 文件创建容器、设置环境变量、映射端口和卷,并启动 PostgreSQL 服务!
  • 看到 Creating pg-container ... done类似的信息就表示启动成功了!

检查一下状态 (可选但推荐):

代码语言:javascript
代码运行次数:0
运行
复制

docker-composeps

你会看到类似这样的输出,State显示 Up并且 (healthy)(如果你配置了健康检查) 就完美了!Name Command State Ports --------------------------------------------------------------------------------------- pg-container docker-entrypoint.sh postgres Up (healthy) 0.0.0.0:5432->5432/tcp

  1. 看看咸鱼的数据保险箱 (可选):在你的 ~/postgres-demo目录下,会多出一个 pgdata文件夹。这里面就是 PostgreSQL 存储所有数据的真实地方!咸鱼切记:别乱删这个文件夹,它就是你的数据库!

(图片2:一张截图,展示在 AlmaLinux 终端中执行 docker-compose up -d命令成功后的输出,以及执行 docker-compose ps命令显示容器状态为 Up (healthy)的结果。同时终端窗口左侧显示 ls命令能看到 docker-compose.ymlpgdata目录。图片标注:Docker Compose 启动 PostgreSQL 成功及目录结构)

咸鱼连接利器:用 DataGrip 摸到你的数据库!

PostgreSQL 在容器里跑欢了,咸鱼总不能老在命令行里敲吧?咱们用强大的 DataGrip(JetBrains 家的数据库管理神器) 连上去,图形化操作才爽!

  1. 打开 DataGrip
  2. 添加数据源 (DataSource):
    • Host: 填你的 AlmaLinux 服务器的 IP 地址!(如果是本地虚拟机或本机,可能是 localhost127.0.0.1)。
    • Port: 填你在 docker-compose.ymlports映射的 左边的主机端口(默认是 5432,如果你改了比如 65432,这里就填 65432)。
    • User: 填你在 environment里设置的 POSTGRES_USER(默认是 postgresuser)。
    • Password: 填你在 environment里设置的 POSTGRES_PASSWORD(那个强密码!)。
    • Database: 填你在 environment里设置的 POSTGRES_DB(默认是 postgresdb),或者填 postgres(这是 PostgreSQL 默认的系统数据库,通常也能连)。
    • 点击 +-> Data Source-> PostgreSQL
    • 连接设置:
    • (可选) 点击 Test Connection测试连接。如果看到 Successful,咸鱼就可以偷着乐了!
  3. 点击 OK保存连接。现在,你就能在 DataGrip 里看到你的 PostgreSQL 实例,可以查看数据库、表,执行 SQL 查询,为所欲为了!(当然,是在你的权限内)。

咸鱼收尾工作 (想停想删看这里)

优雅停止并移除容器 (但保留 pgdata 数据):

代码语言:javascript
代码运行次数:0
运行
复制

cd ~/postgres-demo # 确保在项目目录
docker-compose down

下次 docker-compose up -d又会起来,数据还在 pgdata里。

想彻底删除 (容器+数据卷)?小心!

代码语言:javascript
代码运行次数:0
运行
复制

cd ~/postgres-demo
docker-compose down -v# -v 表示同时删除在 docker-compose.yml 里定义的匿名卷 (但我们用的是命名卷 ./pgdata, 所以这个命令不会删除你的 pgdata 文件夹!)

咸鱼重要提示:docker-compose down -v不会删除你主机上映射的目录 ./pgdata!里面的数据文件还在!真正要删除数据,你需要手动去删掉 ~/postgres-demo/pgdata这个文件夹!删之前三思啊咸鱼!

咸鱼总结一下今天的航程:

  1. 为啥用 Docker Compose?省心省力,环境隔离,配置清晰,关系明确 (Compose -> Docker -> 容器 <-> 主机端口/卷)。
  2. 准备 AlmaLinux:装好 Docker 和 Docker Compose。
  3. 写“说明书”:创建 docker-compose.yml,定义 PostgreSQL 服务,设置用户名密码数据库, 关键:映射端口(连接门)和卷(数据保险箱)
  4. 起飞:docker-compose up -d一键启动。
  5. 连接摸鱼:DataGrip,填对主机IP、端口(映射的主机端口)、用户名、密码、数据库名,轻松连上!
  6. 停服/销毁:docker-compose down(保留数据) / docker-compose down -v(不删数据目录) + 手动删 pgdata(真的想销毁数据时)。

搞定!现在你的“IT咸鱼”AlmaLinux 服务器上,已经稳稳地跑着一个通过 Docker Compose 管理的 PostgreSQL 数据库了,还能用 DataGrip 愉快地玩耍。是不是感觉咸鱼也能拥有强大的数据库力量了?这仅仅是起航的第一步,后面还有更多数据库的咸鱼秘籍等着你!敬请关注“IT咸鱼”!觉得有用?赶紧收藏转发,让更多咸鱼兄弟上岸!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-07-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT咸鱼 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档