目 录CONTENT

文章目录

用docker-compose管理postgres

Administrator
2025-11-25 / 0 评论 / 0 点赞 / 0 阅读 / 0 字

 

字数 1286,阅读大约需 7 分钟

🤔 用docker-compose管理postgres

Docker 提供了 docker-compose 工具,它使得开发者能够通过一个简单的 YAML 文件来定义和管理多个容器化应用。docker-compose 不仅可以简化单个服务的配置,还能轻松处理多个相互依赖的服务,如数据库、缓存服务器和应用程序服务器等.Docker技术在PostgreSQL数据库部署中的应用与探究[1]

在开发环境使用 Docker Compose 部署 PostgreSQL,让开发环境搭建从"几小时的折腾"变成"一分钟启动",保持不同开发环境的数据隔离和开发协作一致性。使用docker-compose 部署 PostgreSQL + 应用 的架构,核心优势在于简化环境一致性、降低部署复杂度、增强可扩展性。PostgreSQL: The world's most advanced open source database[2]
本文将演示如何在开发环境,容器化部署Postgres:

应用开发和postgres使用示意图

执行 docker-compose up -d 一键启动所有服务,docker-compose down 一键停止并清理,极大简化开发、测试环境的搭建流程。以下是后端应用和postgres连接的拓扑关系示意图:使用端口5432即可连接到postgres.

数据库配置 DB Config

后端服务 Backend Services

主机环境 Host Machine

Docker 容器 Docker Container

数据持久化

端口映射
5432:5432

环境变量注入

TCP/IP 连接
postgres://service:service@localhost:5432/dbname

TCP/IP 连接
postgres://service:service@localhost:5432/dbname

TCP/IP 连接
postgres://service:service@localhost:5432/dbname

配置参考

配置参考

配置参考

PostgreSQL 12
服务名: db
主机名: pg.local

数据卷
/var/lib/postgresql/data

主机存储
./postgres/pgdata_all

主机端口
5432

应用服务 1
Backend App

应用服务 2
Backend App

应用服务 N
Backend App

连接配置
---
Host: localhost/pg.local
Port: 5432
User: service
Password: service
Max Connections: 10000

.env 文件
环境变量

部署postgres的yaml参数和配置说明

部署postgres配置的docker-compose.yaml


    
    
    
  ---
# This docker compose file is used for developer to setup
# dev enironment quickly. Only local machine with 
# docker and docker-compose is required.
version: '3.3'
services:
  db:
    image: postgres:12
    restart: always
    volumes:
      # notice: all the db data are located in /root/pgdata
      - ./postgres/pgdata_all:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=service
      - POSTGRES_PASSWORD=service
    command: ["postgres", "-c", "max_connections=10000"]
    env_file:
      - .env
    expose:
      - 5432
    ports:
      - "5432:5432"
    networks:
      - platform-common-net
    hostname: pg.local
networks:
  platform-common-net:
    external: true

参数详细说明

关键参数配置:版本和启动命令

  1. 1. image指定镜像postgres:12✅

  2. 2. 必需restart重启策略always⭐

  3. 3. 推荐volumes数据持久化./data:/var/lib/postgresql/data⭐

  4. 4. 推荐environment环境变量POSTGRES_USER=service⭐

  5. 5. 推荐command自定义命令["postgres", "-c", "max_connections=10000"]

  6. 6. 可选env_file环境变量文件.env

数据持久化: 宿主机和容器映射


    
    
    
  - ./postgres/pgdata_all:/var/lib/postgresql/data

作用:数据持久化挂载

  • 左侧:主机目录 ./postgres/pgdata_all(相对于 docker-compose.yml)

  • 右侧:容器内 PostgreSQL 数据目录

  • 效果:容器删除后数据不丢失


    
    
    
  主机                        容器
./postgres/pgdata_all  ←→  /var/lib/postgresql/data
    ├── base/                  ├── base/        (数据库文件)
    ├── global/                ├── global/      (全局数据)
    ├── pg_wal/                ├── pg_wal/      (事务日志)
    └── postgresql.conf        └── postgresql.conf

环境变量配置:env_file: - .env

从外部文件加载环境变量,读取 .env 文件中的变量


    
    
    
  # 数据库配置
POSTGRES_DB=myapp_dev
POSTGRES_INITDB_ARGS=--encoding=UTF8 --locale=en_US.utf8

# 时区设置
TZ=Asia/Shanghai

# 其他配置
PGDATA=/var/lib/postgresql/data

配置信息示意图


🚀 运行时效果

🐘 db 服务配置

📄 docker-compose.yml

version: '3.3'
指定配置版本

services:
定义服务列表

image: postgres:12
使用 PostgreSQL 12 镜像

restart: always
自动重启策略

volumes:
./postgres/pgdata_all
↕️
/var/lib/postgresql/data

environment:
• POSTGRES_USER=service
• POSTGRES_PASSWORD=service

command:
max_connections=10000

.env 文件
额外环境变量

expose: 5432
内部端口声明

ports: 5432:5432
主机端口映射

hostname: pg.local
容器主机名

Docker 容器
━━━━━━━━━━
名称: db
主机名: pg.local

💾 数据持久化
容器删除数据不丢失

🌐 网络访问
• 内部: db:5432
• 外部: localhost:5432

🔄 自动恢复
崩溃后自动重启

⚡ 高并发支持
最多 10000 连接


谢谢关注收藏

刚刷到的朋友注意啦
点击【关注】锁定宝藏库,从此升职加薪不迷路 ✨



轻量云主机限时优惠

RackNerd

☁ 主机显示特惠:只要80元(3TB流量,1vcpu,50GB硬盘)
购买地址[3]:https://my.racknerd.com/aff.php?aff=14942

CloudCone

CloudCone 特惠轻量云主机购买地址[4]:https://app.cloudcone.com/?ref=12332


📢 腾讯云资源限时福利

有云服务器、CDN、对象存储、网络防护等需求的朋友,欢迎联系下方腾讯云官方销售 👇
✔️ 内部专属折扣,价格更优
✔️ 量大可谈,支持定制方案
✔️ 技术咨询与售后无忧

引用链接

[1] Docker技术在PostgreSQL数据库部署中的应用与探究: https://www.yicaiai.com/news/article/677e84864ddd79f11a001fd2
[2] PostgreSQL: The world's most advanced open source database: https://www.postgresql.org/
[3] 购买地址: https://my.racknerd.com/aff.php?aff=14942
[4] 购买地址: https://app.cloudcone.com/?ref=12332

 

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区