L

Lararu.Blog

Make It Happen.

  • 首页
  • DEVOPS
  • Python-Dev
  • Docker
  • 关于
Home docker部署PostgreSQL
文章

docker部署PostgreSQL

Posted recently Updated recently
By Administrator
5~6 min read

PostgreSQL 稳定部署 + 自动备份 docker-compose.yml

services:
  db:
    image: postgres:16-alpine
    container_name: postgres_db
    restart: always
    # 环境变量直接写在这里,方便管理
    environment:
      POSTGRES_USER: admin
      POSTGRES_PASSWORD: your_super_secret_password
      POSTGRES_DB: prod_db
      TZ: Asia/Shanghai
    volumes:
      - postgres_data:/var/lib/postgresql/data
    # 健康检查:确保数据库真正可用(不仅仅是容器启动)
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U admin -d prod_db"]
      interval: 10s
      timeout: 5s
      retries: 5
    networks:
      - pg_network

  backup:
    image: prodrigestivill/postgres-backup-local
    container_name: postgres_backup
    restart: always
    user: root
    volumes:
      - ./backups:/backups
    depends_on:
      db:
        condition: service_healthy
    environment:
      - POSTGRES_HOST=db
      - POSTGRES_DB=prod_db
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=your_super_secret_password
      - TZ=Asia/Shanghai
      # 每天凌晨 2:00 执行备份
      - SCHEDULE=0 2 * * *
      # 保留最近 7 天的备份文件
      - BACKUP_KEEP_DAYS=7
      # 压缩等级 9 (最高压缩,节省空间)
      - GZIP_LEVEL=9
    networks:
      - pg_network

networks:
  pg_network:
    driver: bridge

volumes:
  postgres_data:

💡 运维小贴士(必看):

  1. 关于备份文件: 备份成功后,你会在当前目录的 ./backups 文件夹下看到类似 prod_db-20260311-020000.sql.gz 的文件。这个文件包含了完整的表结构和数据,你可以通过任何解压软件打开它看 SQL 语句。

  2. 如何手动触发一次备份? 如果你刚刚改了数据,想立刻存个档,执行这个命令:

    Bash

    docker exec postgres_backup /backup.sh
    
  3. 如何恢复数据? 如果有一天需要换服务器,把这个 yml 拷贝过去,启动后执行:

    Bash

    # 假设备份文件叫 backup.sql.gz
    gunzip -c ./backups/backup.sql.gz | docker exec -i postgres_db psql -U admin -d prod_db
    
  4. 关于稳定性的最后提醒: 虽然 postgres_data 卷很稳,但建议你定期把 ./backups 文件夹拷贝到你的个人电脑或云盘里。因为如果服务器的整块硬盘坏了,容器和备份就都没了。

License:  CC BY 4.0
Share

Further Reading

OLDER

docker 部署 Prestashop

NEWER

Recently Updated

  • docker部署PostgreSQL
  • docker 部署 Prestashop
  • 韩国仓储型药店
  • docker部署chrome
  • docker部署wiki.js

Trending Tags

Python-dev Ubuntu Database PVE DevOps Docker Docker-compose

Contents

©2026 Lararu.Blog. Some rights reserved.

Using the Halo theme Chirpy