Docker 部署 PostgreSQL 数据库教程

PostgreSQL是一款开源免费的高级关系型数据库管理系统,始于1986年,由全球开发者社区持续维护迭代,兼具悠久历史与前沿特性。它严格遵循ACID事务原则,确保数据读写的一致性与可靠性,同时突破传统关系型数据库局限,支持多模型存储——既能兼容标准SQL,又可高效处理JSON、数组、地理空间(GIS)等复杂数据类型。

其核心优势在于极强的扩展性:可通过自定义函数、存储过程及丰富插件(如PostGIS用于地理信息分析)拓展功能,适配从中小型应用到企业级海量数据场景(如电商交易、日志分析、科学计算)。此外,它采用多版本并发控制(MVCC)优化高并发读写性能,内置数据加密、访问控制等安全机制,是平衡功能深度、稳定性与运维友好性的主流开源数据库优选。

1、查看 PostgreSQL 镜像详情

你可以在 轩辕镜像 中找到 PostgreSQL 镜像页面:
👉 https://xuanyuan.cloud/r/library/postgres

在镜像页面中,你会看到多种拉取方式,下面逐一说明如何下载与部署。

2、下载 PostgreSQL 镜像

2.1 使用轩辕镜像登录验证方式拉取

docker pull  xxx.xuanyuan.run/library/postgres:latest

2.2 拉取后改名

docker pull  xxx.xuanyuan.run/library/postgres:latest \
&& docker tag  xxx.xuanyuan.run/library/postgres:latest library/postgres:latest \
&& docker rmi  xxx.xuanyuan.run/library/postgres:latest

说明

  • docker pull:从轩辕镜像加速拉取
  • docker tag:重命名为 library/postg xxx.xuanyuan.runres:latest,保持与官方一致
  • docker rmi:删除临时标签,避免重复占用空间

2.3 使用免登录方式拉取(推荐)

免登录方式无需配置账户,新手可直接使用。

docker pull xxx.xuanyuan.run/library/postgres:latest

带重命名的完整命令:

docker pull xxx.xuanyuan.run/library/postgres:latest \
&& docker tag xxx.xuanyuan.run/library/postgres:latest library/postgres:latest \
&& docker rmi xxx.xuanyuan.run/library/postgres:latest

2.4 官方直连方式

若网络可直连 Docker Hub,或已配置加速器,可直接:

docker pull postgres:latest

2.5 查看镜像是否拉取成功

docker images

输出类似:

REPOSITORY      TAG       IMAGE ID       CREATED        SIZE
postgres        latest    5d2f9e78c6f1   2 weeks ago    374MB

3、部署 PostgreSQL

以下示例均基于已下载的 library/postgres:latest 镜像,提供三种部署方式。

3.1 快速部署(最简方式)

适合测试或学习:

docker run -d --name pg-test \-e POSTGRES_PASSWORD=123456 \-p 5432:5432 \library/postgres:latest

参数说明

  • --name pg-test:容器名称
  • -e POSTGRES_PASSWORD=123456:设置 postgres 超级用户密码(必填)
  • -p 5432:5432:将宿主机端口映射到容器 5432 端口

验证方式

docker exec -it pg-test psql -U postgres

若成功进入 psql,说明部署完成。

3.2 挂载目录(推荐方式,适合生产环境)

持久化数据与配置,避免容器删除后数据丢失。

第一步:创建宿主机目录

mkdir -p /data/postgres/{data,conf,logs}

第二步:启动容器并挂载目录

docker run -d --name pg-web \-e POSTGRES_PASSWORD=123456 \-p 5432:5432 \-v /data/postgres/data:/var/lib/postgresql/data \-v /data/postgres/logs:/var/log/postgresql \library/postgres:latest

目录说明

宿主机目录 容器目录 说明
/data/postgres/data /var/lib/postgresql/data 数据持久化目录
/data/postgres/logs /var/log/postgresql 日志目录
/data/postgres/conf /etc/postgresql(可选) 配置目录(需扩展)

3.3 docker-compose 部署(适合企业级场景)

统一管理配置与容器,支持一键启动。

第一步:编写 docker-compose.yml

version: '3'
services:postgres:image: library/postgres:latestcontainer_name: pg-servicerestart: alwaysenvironment:POSTGRES_USER: adminPOSTGRES_PASSWORD: 123456POSTGRES_DB: mydbports:- "5432:5432"volumes:- ./data:/var/lib/postgresql/data- ./logs:/var/log/postgresql

第二步:启动服务

docker compose up -d

补充说明

  • 默认会自动创建数据库 mydb 和用户 admin
  • 修改配置/网页可直接操作挂载目录

4、结果验证

查看容器状态

docker ps

应看到 postgres 容器 Up 状态。

进入 PostgreSQL

docker exec -it pg-service psql -U admin -d mydb

创建测试表

CREATE TABLE test(id SERIAL PRIMARY KEY, name TEXT);
INSERT INTO test(name) VALUES('Hello Xuanyuan!');
SELECT * FROM test;

输出结果即表示数据库可用。

5、常见问题

5.1 无法连接数据库?

  • 确认 防火墙或安全组 放行 5432 端口
  • 检查数据库密码是否正确
  • 执行 docker logs 容器名 查看错误原因

5.2 如何持久化配置?

官方镜像会在 /var/lib/postgresql/data 存储数据,建议挂载宿主机目录。如需自定义配置,可拷贝默认配置:

docker exec -it pg-web bash
cat /var/lib/postgresql/data/postgresql.conf

复制出来后放到宿主机目录再挂载回去。

5.3 数据库时区不正确?

启动时指定:

-e TZ=Asia/Shanghai

5.4 如何启用远程访问?

  1. postgresql.conf 中修改:
    listen_addresses = '*'
    
  2. pg_hba.conf 添加:
    host all all 0.0.0.0/0 md5
    
  3. 然后重启容器:
    docker restart pg-web
    

5.5 日志文件过大?

挂载日志目录后,使用宿主机 logrotate 管理:

/data/postgres/logs/*.log {dailyrotate 7compressmissingoknotifempty
}

结尾

至此,你已掌握基于 轩辕镜像 的 PostgreSQL 部署全流程:从 镜像下载、快速运行、持久化目录挂载,再到 docker-compose 企业级部署 与 问题排查。

初学者可直接用「快速部署」验证数据库,高级工程师则可基于「目录挂载 + docker-compose」实现生产环境部署。随着使用深入,你还可以探索 主从复制、备份恢复、性能优化、监控 等进阶功能,让 PostgreSQL 成为业务的核心数据库引擎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

自己的网站怎么做app吗安徽建设相关网站

在国内,我认为Go语言会成为未来的主流,因为国内程序员号称码农,比较适合搬砖,而Rust对心智要求太高了,不适合搬砖。 就个人经验来看,Go语言简单,下限低,没有什么心智成本&#xff0c…

2025年软件外包平台解析:10个不同定位的真实情况

市面上的软件外包平台数量庞大,定位、规则、收费方式差异很大。有的平台主打低门槛,有的平台强调专业筛选,有的则偏向国际市场。对于想要接触外包工作的开发者来说,选对平台比盲目跟风更重要。 本文整理了 10 个具…

P3574 题解 | 贪心,树形 dp

传送门 题意 给出一颗树,根为 1 号节点,点有点权 \(a\),求从根出发一条遍历每条边恰好两次的路径,使得以下式子最小: 记 \(t_i\) 为第一次到达一个点时走过的路径条数,特别地 \(t_1 = 2 \times n - 2\)(最后回到…

注册账号自建网站高端建筑铝型材

unittest是python自带的单元测试框架,它封装好了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,很多同学也拿它来做功能测试和接口测试,只需简单开发一些功能(…

怎么创建公司的个人网站ps做的网站

在实现播放器的时候,我们需要捕获键盘、鼠标事件进行视频快进、快退,或者双击全屏/退出全屏窗口、鼠标右键弹出菜单栏。默认情况下,在使用libVLC库的时候,我们无法捕获这些事件,因为我们将Qt的视频窗口传递给了libVLC。…

简单工厂模式 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

1.springmvc基础入门(一) - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

爱,在行动中生长,我们因爱而变得辽阔——《岛上书店》读后感

看完了《岛上书店》,合上书最想说的就是:这书真好看。不是那种需要正襟危坐才能读下去的“大作”,更像是在一个闲适的下午,听朋友娓娓道来一个发生在小岛上的,关于一群普通人如何因为书与爱而彼此牵连的故事。 全…

杭州做商务网站网站建设企业实践总结

Windows Server 2012学习 用windows系统来架构网络,以便将资源共享给网络上的用户。 windows的网络架构大致可以分为工作组(workgroup)架构,域(domain)架构与前两者的混合架构。 一、工作组架构为分布式…

做网站的流程视频教程网站开发设计课程

题目 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10 ​100。 输出格式: 在一行内输出 n 的各位数字之和…

东营免费建网站幼儿活动设计方案模板

一、关于效率和适用范围 尽管官方承诺Json格式字段采用了空间换时间的策略,比Text类型来存储Json有大幅度的效率提升。但是Json格式的处理过程仍然效率不及传统关系表,所以什么时候用Json格式字段尤为重要。 只有我们确定系统已经能精确定位到某一行&am…

做一个网站 如何盈利制作网站源码软件

前言 最近在做项目过程中,我们注意到当考虑车体轮廓去进行全局路径规划(如混合A*算法),如果仅仅将障碍物点云数据中得每一个点只当成点,会造成较大的计算时间,如若将点云聚类成圆形 线型 多边形障碍物 会提高计算效率,这是其中一个原因,另一个原因是,我们需要知道障碍…

Ubuntu 下同名文件替换后编译链接到旧内容的现象分析 - 实践

Ubuntu 下同名文件替换后编译链接到旧内容的现象分析 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Conso…

Luogu P14007 「florr IO Round 1」查询游戏 题解 [ 蓝 ] [ 交互 ]

查询游戏 原题做法是显然的,子段绝对值最大值可以转化为求出前缀和序列的最大值、最小值,然后两者作差即可。查询操作可以转化为询问前缀和序列中两个元素比大小。因为查询数 \(2n\),所以各扫一遍用擂台法求最大、最…

RK3588和FPGA桥片之间IO电平信号概率性不能通信原因 - 实践

RK3588和FPGA桥片之间IO电平信号概率性不能通信原因 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consol…

稀缺计算资源如何塑造机器学习优化专家

本文讲述了机器学习专家如何在有限计算资源条件下发展优化技能,重点介绍了特征选择技术在高维空间中的应用,以及如何将这些技术应用于保护电商平台安全的实际场景中。稀缺计算资源如何塑造卡洛斯韦尔塔斯的职业生涯 …

医院建设网站意义电子商务网站首页设计

Project下要创建四个文件夹: bin(输出目录\工作目录) 、include(头文件目录) 、lib(动态库目录) 、src(源码目录) 一、主项目模块配置: 1.配置属性——>常规——>输出目录加入(..\..\bin\) 2.配置属性——>调试——>工作目录加入($(OutDir)) 备注&am…

优雅的合并GIT分支

优雅的合并GIT分支 目标 将dev​分支合并到main分支,并且不产生“合并提交”。具体操作确保本地 main 分支是最新的: bash git checkout main git pull origin main # 获取远程最新的main分支代码切换到 dev​ 分支…

实用指南:豆瓣图书评论数据分析与可视化

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

cpa广告联盟网站建设高端网站开发平台

文章目录 标准化与池化1. 标准化/归一化1.1 归一化归一化的作用 1.2 标准化批标准化方法 Batch Normailzation标准化方法的对比自动学习标准化方法 2. 池化2.1 池化的作用2.2 常见的池化方法2.3 池化方法的差异2.4 池化的必要性 标准化与池化 1. 标准化/归一化 1.1 归一化 归…