当前位置: 首页 > ai >正文

Docker 部署 PostgreSQL 指南

1. 使用 docker命令部署

部署命令:

docker run --name dbname-postgres \-e POSTGRES_USER=postgres \-e POSTGRES_PASSWORD=postgrespwd \-e POSTGRES_DB=db-default \-p 5432:5432 \-v /path/to/data:/var/lib/postgresql/data \--restart always \-d postgres:latest

参数说明:

  • POSTGRES_USER: 设置数据库用户名(默认为 postgres)
  • POSTGRES_PASSWORD: 设置数据库密码
  • POSTGRES_DB: 设置默认数据库(默认为 POSTGRES_USER 的值)
  • -p 5432:5432: 将容器端口映射到主机端口,如果将主机端口改为5000,则为5000:5432
  • -v /path/to/data:/var/lib/postgresql/data: 数据持久化到主机目录
  • postgres:latest: 指定 PostgreSQL 版本为最新版本
  • postgres:13: 指定 PostgreSQL 版本为 13

2. 使用 Docker Compose 部署

创建 docker-compose.yml 文件:

# 指定 Docker Compose 文件格式版本
version: '3.8'# 定义服务列表
services:# 定义 PostgreSQL 服务postgres:# 使用 PostgreSQL 官方镜像,版本13image: postgres:latest# 指定容器名称(如果不指定,Docker 会自动生成)container_name: db-postgres# 环境变量配置environment:# 设置 PostgreSQL 超级用户(默认为 postgres)POSTGRES_USER: postgres# 设置 PostgreSQL 超级用户密码(必须设置)POSTGRES_PASSWORD: postgrespwd# 设置默认创建的数据库名称(默认为 POSTGRES_USER 的值)POSTGRES_DB: db-default# 端口映射配置(主机端口:容器端口)ports:- "5432:5432"  # 将容器内部的5432端口映射到主机的5432端口# 数据卷配置(持久化数据)volumes:# 使用命名卷 postgres_data 挂载到容器中的数据库数据目录- postgres_data:/var/lib/postgresql/data# 容器重启策略restart: always  # 总是自动重启容器,无论退出状态如何# 定义卷列表(用于数据持久化)
volumes:# 定义一个名为 postgres_data 的命名卷# Docker 会自动管理这个卷,确保数据库数据持久化# 即使容器被删除,数据也不会丢失postgres_data:

然后运行:

docker-compose up -d

3. 连接 PostgreSQL

容器运行后,可以通过以下方式连接:

  1. 从主机连接:
psql -h localhost -U myuser -d mydatabase
  1. 进入容器内部连接:
docker exec -it my-postgres psql -U myuser -d mydatabase

4. 常用管理命令

  • 查看运行中的容器:docker ps
  • 查看日志:docker logs my-postgres
  • 停止容器:docker stop my-postgres
  • 启动容器:docker start my-postgres
  • 删除容器:docker rm my-postgres(需要先停止)

5. 高级配置

如果需要自定义 PostgreSQL 配置,可以:

  1. 创建自定义配置文件 postgresql.conf
  2. 挂载到容器中:
-v /path/to/postgresql.conf:/etc/postgresql/postgresql.conf
  1. 启动时指定配置文件:
-e POSTGRES_CONFIG_FILE=/etc/postgresql/postgresql.conf

注意事项

  1. 数据持久化:务必使用卷或绑定挂载来持久化数据,否则容器删除后数据会丢失
  2. 安全性:不要使用弱密码,生产环境应考虑更复杂的安全配置
  3. 性能:对于生产环境,可能需要调整共享缓冲区等参数
  4. 备份:定期备份数据库数据
http://www.xdnf.cn/news/14057.html

相关文章:

  • C++ RPC 远程过程调用详细解析
  • Python爬虫-爬取票牛明星演唱会数据,进行数据分析
  • 日志分割问题
  • 卷积神经网络的参数量及尺度变化计算
  • [每周一更]-(第147期):使用 Go 语言实现 JSON Web Token (JWT)
  • WWDC25中的HDR技术洞察
  • 基于深度学习的智能图像分类系统:从零开始构建
  • BeckHoff <---> Keyence (LJ-8000) 2D相机 Profinet 通讯
  • PyTorch框架详解(1)
  • 韦东奕论文解读
  • 开机自启动文件夹
  • Vue嵌套路由
  • 机器学习入门 | 机器学习方法与模型概述
  • 【图纸管理教程-3】编码统一,效率倍增!解决一物多码问题
  • Manus邀请薅羊毛
  • WPF加载文本文件时如何设置WebBrowser的字体
  • 第三章支线八 ·构建之巅 · 工具链与打包炼金术
  • ELK日志文件分析系统——概念
  • linux pcie【6】- epf驱动介绍
  • 土壤水分温度盐分ph测定仪
  • Linux系统环境变量详解
  • 一键读取Excel生成可视化图表
  • 【6S.081】Lab2 System Calls
  • QWebEngine
  • 以楼宇自控关键技术,夯实现代低碳建筑发展重要基础
  • Android多渠道打包
  • 14-域名解析DNS 自我总结
  • 【浅谈】Agent 的存在具有什么意义
  • 好用的批量处理软件,免费使用!
  • 鸿蒙Next仓颉语言开发实战教程:订单详情