Docker Compose安装部署PostgreSQL数据库

以下是一个完整的 PostgreSQL Docker Compose 部署教程,包括配置和部署详细步骤。本文将指导您如何在 Linux 服务器上使用 Docker Compose 来部署 PostgreSQL,并将数据持久化到指定路径。

1. 环境准备

确保您的系统上已经安装了以下软件:

  • Docker:用于容器化应用程序。参考 Docker 官方文档 进行安装。
  • Docker Compose:用于定义和运行多容器 Docker 应用程序。参考 Docker Compose 官方文档 进行安装。

验证安装是否成功:

docker --version
docker-compose --version

2. 创建所需的目录

为了确保数据持久化存储,先创建工作目录和持久化数据目录。

执行以下命令:

# 创建工作目录
mkdir -p /opt/postgresql# 创建持久化目录
mkdir -p /opt/docker-data/postgresql && chmod 777 /opt/docker-data/postgresql

说明

  • /opt/postgresql 是用于存放项目文件的工作目录。
  • /opt/docker-data/postgresql 是持久化 PostgreSQL 数据的目录,设置权限为 777 确保容器可以读写。

3. 创建 docker-compose.yml 文件

进入工作目录 /opt/postgresql,然后创建 docker-compose.yml 文件:

cd /opt/postgresql
touch docker-compose.yml

编辑 docker-compose.yml 文件,内容如下:

version: '3.8'services:postgres:image: postgres:15                # 使用 PostgreSQL 15 镜像container_name: postgres_db       # 容器名称environment:POSTGRES_USER: root             # 设置用户名为 'root'POSTGRES_PASSWORD: 123456       # 设置密码为 '123456'POSTGRES_DB: demo               # 设置数据库名为 'demo'ports:- "5433:5432"                   # 将容器的 5432 端口映射到主机的 5433 端口volumes:- /opt/docker-data/postgresql:/var/lib/postgresql/data  # 数据映射到主机指定路径volumes:postgres_data:

文件解释

  • services: 定义了 PostgreSQL 服务。
    • image: 使用官方 PostgreSQL 15 镜像。
    • container_name: 给容器命名为 postgres_db
    • environment: 设置数据库的环境变量,包括用户名、密码和默认数据库名称。
    • ports: 将容器的默认 PostgreSQL 端口 5432 映射到主机的 5433 端口。
    • volumes: 将容器的数据目录 /var/lib/postgresql/data 映射到主机的 /opt/docker-data/postgresql,实现数据持久化。

4. 启动 PostgreSQL 服务

docker-compose.yml 文件所在的目录中,执行以下命令来启动服务:

docker-compose up -d

说明

  • -d 选项表示以“后台模式”运行容器。
  • 此时,PostgreSQL 容器将启动,数据将持久化到 /opt/docker-data/postgresql 目录。

5. 验证 PostgreSQL 部署

检查容器状态:

docker-compose ps

您应该会看到类似如下的输出,表示 PostgreSQL 容器正在运行:

   Name                 Command               State         Ports
-------------------------------------------------------------------------
postgres_db     docker-entrypoint.sh postgres   Up      0.0.0.0:5433->5432/tcp

登录到 PostgreSQL 容器进行验证:

docker exec -it postgres_db psql -U root -d demo

命令解释

  • docker exec -it postgres_db:进入名为 postgres_db 的容器。
  • psql -U root -d demo:使用 root 用户登录到 demo 数据库。

6. 连接 PostgreSQL 数据库

您可以使用任意数据库客户端连接 PostgreSQL。连接参数如下:

  • 主机localhost 或 Docker 主机 IP
  • 端口5433
  • 用户名root
  • 密码123456
  • 数据库demo

示例命令行连接:

psql -h localhost -p 5433 -U root -d demo

7. 停止和删除 PostgreSQL 容器

如需停止和删除容器,可以执行以下命令:

docker-compose down

该命令将停止容器并删除网络配置,但不会删除持久化的数据(数据保存在 /opt/docker-data/postgresql 目录下)。

8. 备份与恢复数据

备份数据库

您可以使用以下命令来备份数据库:

docker exec -t postgres_db pg_dump -U root demo > /opt/docker-data/postgresql/backup.sql

恢复数据库

如果您需要从备份中恢复数据,可以执行以下命令:

docker exec -i postgres_db psql -U root -d demo < /opt/docker-data/postgresql/backup.sql

结束语

通过以上步骤,您已经成功使用 Docker Compose 部署了 PostgreSQL,并且数据已经持久化到指定的路径 /opt/docker-data/postgresql。这个部署方案方便了数据库的管理和备份,适合在开发和生产环境中使用。

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

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

相关文章

【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合

【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合 https://arxiv.org/pdf/2402.10979 目录 文章目录 【大语言模型】ACL2024论文-19 SportsMetrics: 融合文本和数值数据以理解大型语言模型中的信息融合目录摘要研究背景问题与挑…

39页PDF | 毕马威_数据资产运营白皮书(限免下载)

一、前言 《毕马威数据资产运营白皮书》探讨了数据作为新型生产要素在企业数智化转型中的重要性&#xff0c;提出了数据资产运营的“三要素”&#xff08;组织与意识、流程与规范、平台与工具&#xff09;和“四重奏”&#xff08;数据资产盘点、评估、治理、共享&#xff09;…

【UE5】使用基元数据对材质传参,从而避免新建材质实例

在项目中&#xff0c;经常会遇到这样的需求&#xff1a;多个模型&#xff08;例如 100 个&#xff09;使用相同的材质&#xff0c;但每个模型需要不同的参数设置&#xff0c;比如不同的颜色或随机种子等。 在这种情况下&#xff0c;创建 100 个实例材质不是最佳选择。正确的做…

[STBC]

空时分组编码STBC&#xff08;Space Time Block Coding&#xff09;: //一个数据流通过多个天线发射发送&#xff0c;硬件编码器 STBC概念是从MIMO技术衍生出来的&#xff0c;目的是在多天线系统中提高数据传输的可靠性和传输距离。在rx&#xff08;接收天线&#xff09;和tx&…

241120学习日志——[CSDIY] [InternStudio] 大模型训练营 [09]

CSDIY&#xff1a;这是一个非科班学生的努力之路&#xff0c;从今天开始这个系列会长期更新&#xff0c;&#xff08;最好做到日更&#xff09;&#xff0c;我会慢慢把自己目前对CS的努力逐一上传&#xff0c;帮助那些和我一样有着梦想的玩家取得胜利&#xff01;&#xff01;&…

PCB 间接雷击模拟

雷击是一种危险的静电放电事件&#xff0c;其中两个带电区域会瞬间释放高达 1 千兆焦耳的能量。雷击就像一个短暂而巨大的电流脉冲&#xff0c;会对建筑物和电子设备造成严重损坏。雷击可分为直接和间接两类&#xff0c;其中间接影响是由于感应能量耦合到靠近雷击位置的物体。间…

IDEA2019搭建Springboot项目基于java1.8 解决Spring Initializr无法创建jdk1.8项目 注释乱码

后端界面搭建 将 https://start.spring.io/ 替换https://start.aliyun.com/ 报错 打开设置 修改如下在这里插入代码片 按此方法无果 翻阅治疗后得知 IDEA2019无法按照网上教程修改此问题因此更新最新idea2024或利用插件Alibaba Clouod Toolkit 换用IDEA2024创建项目 下一步…

单向C to DP视频传输解决方案 | LDR6500

LDR6500D如何通过Type-C接口实现手机到DP接口的单向视频传输 在当今数字化浪潮中&#xff0c;投屏技术作为连接设备、共享视觉内容的桥梁&#xff0c;其重要性日益凸显。PD&#xff08;Power Delivery&#xff09;芯片&#xff0c;特别是集成了Type-C接口与DisplayPort&#xf…

Leetcode 第 143 场双周赛题解

Leetcode 第 143 场双周赛题解 Leetcode 第 143 场双周赛题解题目1&#xff1a;3345. 最小可整除数位乘积 I思路代码复杂度分析 题目2&#xff1a;3346. 执行操作后元素的最高频率 I思路代码复杂度分析 题目3&#xff1a;3347. 执行操作后元素的最高频率 II题目4&#xff1a;33…

Spark 之 Aggregate

Aggregate 参考链接&#xff1a; https://github.com/PZXWHU/SparkSQL-Kernel-Profiling 完整的聚合查询的关键字包括 group by、 cube、 grouping sets 和 rollup 4 种 。 分组语句 group by 后面可以是一个或多个分组表达式&#xff08; groupingExpressions &#xff09;…

【IDEA】解决总是自动导入全部类(.*)问题

文章目录 问题描述解决方法 我是一名立志把细节说清楚的博主&#xff0c;欢迎【关注】&#x1f389; ~ 原创不易&#xff0c; 如果有帮助 &#xff0c;记得【点赞】【收藏】 哦~ ❥(^_-)~ 如有错误、疑惑&#xff0c;欢迎【评论】指正探讨&#xff0c;我会尽可能第一时间回复…

如何快速将Excel数据导入到SQL Server数据库

工作中&#xff0c;我们经常需要将Excel数据导入到数据库&#xff0c;但是对于数据库小白来说&#xff0c;这可能并非易事&#xff1b;对于数据库专家来说&#xff0c;这又可能非常繁琐。 这篇文章将介绍如何帮助您快速的将Excel数据导入到sql server数据库。 准备工作 这里&…

在centos7中安装SqlDeveloper的Oracle可视化工具

1.下载安装包 &#xff08;1&#xff09;在SqlDeveloper官网下载&#xff08;Oracle SQL Developer Release 19.2 - Get Started&#xff09;对应版本的安装包即可&#xff08;安装包和安装命令如下&#xff09;&#xff1a; &#xff08;2&#xff09;执行完上述命令后&#x…

【动手学深度学习Pytorch】4. 神经网络基础

模型构造 回顾一下感知机。 nn.Sequential()&#xff1a;定义了一种特殊的module。 torch.rand()&#xff1a;用于生成具有均匀分布的随机数&#xff0c;这些随机数的范围在[0, 1)之间。它接受一个形状参数&#xff08;shape&#xff09;&#xff0c;返回一个指定形状的张量&am…

Spring Boot + Vue 基于 RSA 的用户身份认证加密机制实现

Spring Boot Vue 基于 RSA 的用户身份认证加密机制实现 什么是RSA&#xff1f;安全需求介绍前后端交互流程前端使用 RSA 加密密码安装 jsencrypt库实现敏感信息加密 服务器端生成RSA的公私钥文件Windows环境 生成rsa的公私钥文件Linux环境 生成rsa的公私钥文件 后端代码实现返…

一键部署 200+ 开源软件的 Websoft9 面板,Github 2k+ 星星

Websoft9面板是一款基于Web的PaaS/Linux面板&#xff0c;可用于在自己的服务器上一键部署200多种热门开源应用&#xff0c;在Github上获得了2k星星。 特点与优势 丰富的开源软件集成&#xff1a;涵盖数据库、Web服务器、企业建站、电商系统、教育系统、中间件、大数据工具等多…

NLP论文速读(MPO)|通过混合偏好优化提高多模态大型语言模型的推理能力

论文速读|Dynamic Rewarding with Prompt Optimization Enables Tuning-free Self-Alignment of Language Models 论文信息&#xff1a; 简介&#xff1a; 本文探讨的背景是多模态大型语言模型&#xff08;MLLMs&#xff09;在多模态推理能力上的局限性&#xff0c;尤其是在链式…

动态规划子数组系列一>等差数列划分

题目&#xff1a; 解析&#xff1a; 代码&#xff1a; public int numberOfArithmeticSlices(int[] nums) {int n nums.length;int[] dp new int[n];int ret 0;for(int i 2; i < n; i){dp[i] nums[i] - nums[i-1] nums[i-1] - nums[i-2] ? dp[i-1]1 : 0;ret dp[i…

用 React18 构建Tic-Tac-Toe(井字棋)游戏

下面是一个完整的 Tic-Tac-Toe&#xff08;井字棋&#xff09;游戏的实现&#xff0c;用 React 构建。包括核心逻辑和组件分离&#xff0c;支持两人对战。 1. 初始化 React 项目&#xff1a; npx create-react-app tic-tac-toe cd tic-tac-toe2.文件结构 src/ ├── App.js…

前端—Cursor编辑器

在当今快速发展的软件开发领域&#xff0c;效率和质量是衡量一个工具是否优秀的两个关键指标。今天&#xff0c;我要向大家推荐一款革命性的代码编辑器——Cursor&#xff0c;它集成了强大的AI功能&#xff0c;旨在提高开发者的编程效率。以下是Cursor编辑器的详细介绍和推荐理…