PostgreSQL 17 与 Redis 8.0 的 Docker Compose 部署配置 本文共有5494个字,关键词: 以下是一个完整的 docker-compose.yml 配置文件,用于部署 PostgreSQL 17.6 和 Redis 8.0.5,并确保数据持久化保存: ```yaml version: '3.8' services: # PostgreSQL 17.6 服务 postgres: image: postgres:17.6 container_name: postgres-17 restart: unless-stopped environment: POSTGRES_USER: admin POSTGRES_PASSWORD: StrongPassword123! # 请在生产环境中修改 POSTGRES_DB: mydatabase PGDATA: /var/lib/postgresql/data/pgdata volumes: # 数据持久化卷 - postgres_data:/var/lib/postgresql/data # 初始化脚本目录(可选) - ./postgres-init:/docker-entrypoint-initdb.d ports: - "5432:5432" networks: - app-network healthcheck: test: ["CMD-SHELL", "pg_isready -U admin"] interval: 10s timeout: 5s retries: 5 command: > postgres -c max_connections=100 -c shared_buffers=256MB -c effective_cache_size=1GB # Redis 8.0.5 服务 redis: image: redis:8.0.5-alpine container_name: redis-8 restart: unless-stopped command: > redis-server --requirepass RedisSecurePass123! # 请在生产环境中修改 --appendonly yes --appendfsync everysec --maxmemory 512mb --maxmemory-policy allkeys-lru volumes: # 数据持久化卷 - redis_data:/data # Redis 配置文件(可选) - ./redis.conf:/usr/local/etc/redis/redis.conf ports: - "6379:6379" networks: - app-network healthcheck: test: ["CMD", "redis-cli", "--raw", "incr", "ping"] interval: 10s timeout: 5s retries: 5 # 自定义网络 networks: app-network: driver: bridge ipam: config: - subnet: 172.20.0.0/16 # 持久化数据卷定义 volumes: postgres_data: name: postgres_persistent_data driver: local driver_opts: type: none o: bind device: ./data/postgres # 本地目录映射 redis_data: name: redis_persistent_data driver: local driver_opts: type: none o: bind device: ./data/redis # 本地目录映射 ``` 在运行前,建议创建以下目录结构: ``` your-project/ ├── docker-compose.yml # 上面的配置文件 ├── data/ # 数据目录(docker-compose.yml 自动创建) │ ├── postgres/ # PostgreSQL 数据 │ └── redis/ # Redis 数据 ├── postgres-init/ # (可选)PostgreSQL 初始化脚本 │ └── 01-init.sql # 初始化 SQL 脚本 └── redis.conf # (可选)Redis 自定义配置文件 ``` ### 🚀 快速开始 #### 1. 启动服务 ``` # 创建项目目录并进入 mkdir my-app && cd my-app # 创建 docker-compose.yml 文件,粘贴上面的配置 # 启动服务(后台运行) docker-compose up -d # 查看服务状态 docker-compose ps # 查看日志 docker-compose logs -f ``` #### 2. 验证服务运行 ``` # 检查 PostgreSQL docker-compose exec postgres psql -U admin -d mydatabase -c "SELECT version();" # 检查 Redis docker-compose exec redis redis-cli -a RedisSecurePass123! ping # 返回 "PONG" 表示成功 ``` #### 3. 管理命令 ``` # 停止服务(保留数据) docker-compose down # 停止并删除所有数据 docker-compose down -v # 重启特定服务 docker-compose restart postgres # 查看资源使用情况 docker-compose stats ``` ### 🔧 高级配置选项 #### PostgreSQL 性能调优(可选) 在 postgres-init/01-init.sql 中添加: ``` -- 创建额外数据库 CREATE DATABASE appdb; -- 创建用户和权限 CREATE USER appuser WITH PASSWORD 'UserPass123'; GRANT ALL PRIVILEGES ON DATABASE appdb TO appuser; -- 性能参数调整 ALTER SYSTEM SET work_mem = '16MB'; ALTER SYSTEM SET maintenance_work_mem = '128MB'; ``` #### Redis 配置优化(可选) ``` # 连接设置 maxclients 10000 timeout 300 # 持久化策略 save 900 1 save 300 10 save 60 10000 # 内存管理 maxmemory-policy volatile-lru # 安全设置 rename-command FLUSHDB "" rename-command FLUSHALL "" ``` ### 📊 数据持久化说明 #### PostgreSQL 数据位置 - 容器内路径: /var/lib/postgresql/data - 宿主机路径: ./data/postgres(项目目录下) - 备份方法: ``` # 备份数据库 docker-compose exec postgres pg_dump -U admin mydatabase > backup.sql # 恢复数据库 cat backup.sql | docker-compose exec -T postgres psql -U admin mydatabase ``` #### Redis 数据位置 - 容器内路径: /data - 宿主机路径: ./data/redis(项目目录下) - 数据文件: appendonly.aof(AOF 持久化文件) - 备份方法: ``` # 创建 RDB 快照 docker-compose exec redis redis-cli -a RedisSecurePass123! SAVE # 复制数据文件 cp ./data/redis/appendonly.aof ./backup/ ``` ### 🛡️ 安全注意事项 - 网络暴露 ``` # 生产环境建议移除 ports 暴露,或限制 IP 访问 ports: - "127.0.0.1:5432:5432" # 仅本地访问 # 或使用内部网络,不暴露端口 # ports: [] # 不暴露端口,仅容器间访问 ``` - 环境变量管理 ``` # 创建 .env 文件(不要提交到版本控制) POSTGRES_PASSWORD=你的强密码 REDIS_PASSWORD=你的强密码 ``` 然后在 docker-compose.yml 中引用: ``` environment: POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} command: > redis-server --requirepass ${REDIS_PASSWORD} ``` ### 🔍 故障排查 - 常见问题: - 端口冲突: ```bash # 检查端口占用 netstat -tulpn | grep :5432 # 或修改 docker-compose.yml 中的端口映射 ports: - "5433:5432" # 外部:内部 ``` - 权限问题: ```bash # 确保本地数据目录有正确权限 chmod 755 ./data ``` - 服务启动失败: ```bash # 查看详细日志 docker-compose logs postgres docker-compose logs redis # 尝试重新构建 docker-compose down -v docker-compose up -d --build ``` - 监控命令: ```bash # 查看服务状态 docker-compose ps # 实时日志 docker-compose logs -f --tail=50 # 资源使用 docker-compose top # 进入容器检查 docker-compose exec postgres bash docker-compose exec redis redis-cli -a RedisSecurePass123! INFO ``` ### 📝 版本信息验证 部署完成后,验证版本: ```bash # PostgreSQL 版本 docker-compose exec postgres postgres --version # 输出:postgres (PostgreSQL) 17.6 # Redis 版本 docker-compose exec redis redis-server --version # 输出:Redis server v=8.0.5 sha=... ``` 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 梦白沙 (๑>ڡ<)☆谢谢老板~ 1元 2元 5元 10元 50元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 默认分类 2026-01-21 评论 1 次浏览