使用 Docker Compose 安装 PostgreSQL 16

前面是指南,后面是实际工作日志。

1. 创建 docker-compose.yml 文件

yaml

复制

下载

version: '3.9'
services:postgres:image: postgres:16container_name: postgres-16environment:POSTGRES_USER: your_username     # 替换为你的用户名POSTGRES_PASSWORD: your_password # 替换为你的强密码POSTGRES_DB: your_database       # 替换为默认数据库名volumes:- postgres_data:/var/lib/postgresql/dataports:- "5432:5432"restart: alwaysvolumes:postgres_data:

2. 启动容器

bash

复制

下载

docker-compose up -d

3. 验证安装

bash

复制

下载

docker ps -a | grep postgres-16

输出应显示容器状态为 Up


关键配置说明

  1. 数据持久化
    volumes 映射确保数据库数据保存在主机上(即使容器删除,数据也不会丢失)

  2. 环境变量

    • POSTGRES_USER: 超级用户账号

    • POSTGRES_PASSWORD: 数据库密码(建议使用强密码)

    • POSTGRES_DB: 容器启动时创建的默认数据库

  3. 端口映射
    5432:5432 将容器端口映射到主机端口


常用管理命令

命令说明
docker-compose stop停止容器
docker-compose start启动容器
docker-compose down -v删除容器和数据卷
docker exec -it postgres-16 psql -U your_username进入PSQL命令行
docker logs postgres-16查看数据库日志

安全增强建议(可选)

yaml

复制

下载

environment:# 禁用默认public模式写权限POSTGRES_INITDB_ARGS: "--auth-host=scram-sha-256 --no-instance"# 启用SSLPOSTGRES_SSL: "on"# 禁用超级用户远程登录POSTGRES_HOST_AUTH_METHOD: "scram-sha-256"

💡 生产环境必做

  1. 修改默认的 postgres 用户名

  2. 使用至少16位复杂密码

  3. 通过 .env 文件管理敏感信息(避免密码泄露)


连接示例(Python psycopg2)

python

复制

下载

import psycopg2conn = psycopg2.connect(host="localhost",port=5432,user="your_username",password="your_password",database="your_database"
)

通过以上步骤,您已完成 PostgreSQL 16 的容器化部署!

[root@centos08 work]# cd postgresql/

[root@centos08 postgresql]# ls

[root@centos08 postgresql]# vi docker-compose.yml

[root@centos08 postgresql]# docker-compose up -d

WARN[0000] /work/postgresql/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion

[+] Running 15/15

✔ postgres Pulled 72.0s

✔ 61320b01ae5e Pull complete 22.6s

✔ 2dced227b4f3 Pull complete 23.0s

✔ f91d7f75e2ed Pull complete 23.8s

✔ d52fe2b6a589 Pull complete 24.3s

✔ c66d2dcd9ac2 Pull complete 50.7s

✔ 5dedf13f853f Pull complete 51.2s

✔ a1b7b6ac9604 Pull complete 51.4s

✔ 54e868887d72 Pull complete 51.8s

✔ 54fbe2476d31 Pull complete 68.3s

✔ 0d367dbc515a Pull complete 68.6s

✔ fcdc97c8b0f7 Pull complete 68.9s

✔ 35ea952ba4d5 Pull complete 69.2s

✔ 6802029dd7cb Pull complete 69.6s

✔ 89ac21e5afbc Pull complete 69.9s

[+] Running 3/3

✔ Network postgresql_default Created 0.3s

✔ Volume "postgresql_postgres_data" Created 0.1s

✔ Container postgres-16 Started 1.3s

[root@centos08 postgresql]# docker ps -a | grep postgres-16

52f5cd24ba5c postgres:16 "docker-entrypoint.s…" 14 seconds ago Up 12 seconds 0.0.0.0:5432->5432/tcp postgres-16

[root@centos08 postgresql]#

[root@centos08 postgresql]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

postgres 16 616e340baeac 2 weeks ago 436MB

bitnami/kafka 3.5.2 21bd84c8365d 5 months ago 638MB

redis 7.2.4 9b38108e295d 14 months ago 116MB

zilliz/attu v2.3.3 5c2a0dd36e38 18 months ago 282MB

milvusdb/milvus v2.3.3 7e482a814849 19 months ago 870MB

minio/minio RELEASE.2023-03-20T20-16-18Z 400c20c8aac0 2 years ago 252MB

quay.io/coreos/etcd v3.5.5 673f29d03de9 2 years ago 182MB

[root@centos08 postgresql]# docker save postgres:16 -o postgres-16.tar

[root@centos08 postgresql]# ls -lh

total 424M

-rw-r--r-- 1 root root 429 Jun 5 09:59 docker-compose.yml

-rw------- 1 root root 424M Jun 5 10:03 postgres-16.tar

[root@centos08 postgresql]#

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

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

相关文章

从数据报表到决策大脑:AI重构电商决策链条

在传统电商运营中,决策链条往往止步于“数据报表层”:BI工具整合历史数据,生成滞后一周甚至更久的销售分析,运营团队凭经验预判需求。当爆款突然断货、促销库存积压时,企业才惊觉标准化BI的决策时差正成为增长瓶颈。 一…

SpringBoot 自动化部署实战:CI/CD 整合方案与避坑指南

引言 在微服务架构盛行的今天,SpringBoot 凭借其开箱即用的特性成为 Java 后端开发的主流框架。然而,随着项目规模扩大,手动部署的效率瓶颈逐渐显现。本文将结合 GitLab CI/CD、Jenkins 等工具,深入探讨 SpringBoot 项目的自动化部…

力扣HOT100之二分查找:35. 搜索插入位置

这道题属于是二分查找的入门题了,我依稀记得一些二分查找的编码要点,但是最后还是写出了一个死循环,无语(ˉ▽ˉ;)…又回去看了下自己当时的博客和卡哥的视频,这才发现自己分情况只分了两种,最后导致死循环…

VS创建Qt项目,Qt的关键字显示红色波浪线解决方法

如图所示,VS2017新创建的Qt项目,编译正常,关键字显示识别失败,显示红色波浪线,编译运行没问题。 解决方法: 如下图所示,C/C -> 常规 -> 附加包含目录 ->添加Qt的Include路径 如下图…

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…

人机融合智能 | “人智交互”跨学科新领域

本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…

ccf中学生计算机程序设计入门篇课后题p164页test(1)-2 输入一个数,统计这个数二进制中1的个数

include <iostream> using namespace std;int main() {int x;int n 0;// 输入数据cin >> x;// 统计x二进制中1的个数for (n 0; x ! 0; x & x - 1) {n;}// 输出结果cout << n << endl;return 0; }程序解释&#xff1a; 输入&#xff1a;程序从标…

无人机侦测与反制技术的进展与应用

国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机&#xff08;无人驾驶飞行器&#xff0c;UAV&#xff09;技术的快速发展&#xff0c;其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统&#xff0c;无人机的“黑飞”&…

【Go语言基础【18】】Map基础

文章目录 零、概述一、Map基础1、Map的基本概念与特性2、Map的声明与初始化3、Map的基本操作 二、Map的底层实现三、Map的注意事项 零、概述 Map与其他语言的对比 特性Go mapJava HashMapPython dict并发安全非线程安全&#xff0c;需手动加锁非线程安全&#xff08;Concurre…

Qt客户端技巧 -- 窗口美化 -- 窗口阴影

不解析&#xff0c;直接给示例 窗口设为不边框且背景透明,好用来承载阴影 窗口一个Widget用来作真实窗口的作用&#xff0c;在真实窗口上加上阴影特效 上下两层Widget方式 main.cpp #include <QtCore/qglobal.h> #if QT_VERSION > 0x050000 #include <QtWidget…

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…

华为OD最新机试真题-流水线-OD统一考试(B卷)

题目描述: 有个工厂有m条 流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。 现给定流水线个数m,需要完成的作业数n,每个作业的处理时间分别为t1,.2..n。请你编程计算处理完所有作业的耗时为多少? 当n>m时

区块链技术概述

区块链技术是一种去中心化、分布式账本技术&#xff0c;通过密码学、共识机制和智能合约等核心组件&#xff0c;实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点&#xff1a;数据存储在网络中的多个节点&#xff08;计算机&#xff09;&#xff0c;而非…

项目css / js的兼容性next项目实践处理

之前写过一篇&#xff0c;但是没有css的处理&#xff0c;但是那一篇有几个文章蛮好的https://blog.csdn.net/SaRAku/article/details/144704916 css兼容性和js兼容性 1. 确定需要兼容的版本 先确定你们的兼容性版本&#xff0c;我们的兼容性以APP H5的兼容版本为最低兼容性&…

Vue3 + Vite 中使用 Lodash-es 的防抖 debounce 详解

Vue3 Vite 中使用 Lodash-es 的防抖(debounce)详解 在 Vue3 Vite 项目中&#xff0c;debounce 是 lodash-es 中最常用的功能之一&#xff0c;它可以帮助我们优化高频事件的处理。下面我将详细讲解 debounce 的使用方法&#xff0c;并提供一个完整的示例。 Debounce 核心概念…

MySQL--慢查询日志、日志分析工具mysqldumpslow

mysqldumpslow 常用参数&#xff1a; -s&#xff0c;是order的顺序----- al 平均锁定时间-----ar 平均返回记录时间-----at 平均查询时间&#xff08;默认&#xff09;-----c 计数-----l 锁定时间-----r 返回记录-----t 查询时间-t&#xff0c;是top n的意思&#xff0c;即为返…

C++课设:实现图书馆借阅记录系统(支持书籍管理、借阅功能、超期检测提醒)

名人说&#xff1a;路漫漫其修远兮&#xff0c;吾将上下而求索。—— 屈原《离骚》 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 专栏介绍&#xff1a;《编程项目实战》 目录 一、系统概述与设计思路1. 系统核心功能…

矩阵和向量范数的区别分析

文章目录 1. 研究对象本质差异2. 运算和作用方式不同3. 应用需求不同4. 数学性质和理论体系不同5. 几何直观不同6. 范数定义区别7. 范数计算方式区别8. 范数几何意义区别9. 范数相容性区别总结 1. 研究对象本质差异 向量本质&#xff1a;向量是具有大小和方向的一维有序数组&a…

HTMLCSS 学习总结

目录 ​​​一、HTML核心概念​​ ​​三大前端技术作用​​ ​​HTML基础结构​​ 开发工具&#xff1a;VS Code 专业配置​​​​安装步骤​​&#xff1a; ​​二、HTML标签大全&#xff08;含表格&#xff09;​​ ​​三、CSS核心技术​​ 1. 三种引入方式对比 2.…