infra: Docker Compose 开发环境(PostgreSQL + Redis)

- docker-compose.dev.yml: PostgreSQL 17 + Redis 7 服务编排
- init.sql: auth 模块表结构 + 默认角色 + 超级管理员
- redis.conf: 开发环境 Redis 配置
- dev-setup.sh: 一键启动开发环境脚本
- .gitignore: 项目全局忽略规则

Made-with: Cursor
This commit is contained in:
bujinyuan
2026-02-28 10:36:38 +08:00
parent 37d206d556
commit d81c5743f5
5 changed files with 289 additions and 0 deletions

77
scripts/dev-setup.sh Executable file
View File

@@ -0,0 +1,77 @@
#!/bin/bash
# EchoChat 开发环境一键搭建脚本
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
PROJECT_ROOT="$(dirname "$SCRIPT_DIR")"
DEPLOY_DIR="$PROJECT_ROOT/deploy"
echo "========================================="
echo " EchoChat 开发环境搭建"
echo "========================================="
# 检查 Docker 是否安装
if ! command -v docker &> /dev/null; then
echo "❌ Docker 未安装,请先安装 Docker Desktop"
exit 1
fi
# 检查 Docker Compose 是否可用
if ! docker compose version &> /dev/null; then
echo "❌ Docker Compose 不可用,请确保 Docker Desktop 已正确安装"
exit 1
fi
echo "✅ Docker 和 Docker Compose 已就绪"
# 启动基础设施服务
echo ""
echo "🚀 启动 PostgreSQL 和 Redis ..."
cd "$DEPLOY_DIR"
docker compose -f docker-compose.dev.yml up -d
# 等待服务就绪
echo ""
echo "⏳ 等待服务健康检查通过 ..."
sleep 3
# 检查 PostgreSQL
MAX_RETRIES=30
RETRY=0
until docker exec echochat-postgres pg_isready -U echochat > /dev/null 2>&1; do
RETRY=$((RETRY + 1))
if [ $RETRY -ge $MAX_RETRIES ]; then
echo "❌ PostgreSQL 启动超时"
exit 1
fi
sleep 1
done
echo "✅ PostgreSQL 已就绪 (localhost:5432)"
# 检查 Redis
RETRY=0
until docker exec echochat-redis redis-cli ping > /dev/null 2>&1; do
RETRY=$((RETRY + 1))
if [ $RETRY -ge $MAX_RETRIES ]; then
echo "❌ Redis 启动超时"
exit 1
fi
sleep 1
done
echo "✅ Redis 已就绪 (localhost:6379)"
echo ""
echo "========================================="
echo " ✅ 开发环境搭建完成!"
echo "========================================="
echo ""
echo " PostgreSQL: localhost:5432"
echo " 数据库: echochat"
echo " 用户名: echochat"
echo " 密码: echochat_dev_2026"
echo ""
echo " Redis: localhost:6379"
echo ""
echo " 管理员账号: admin / admin123456"
echo "========================================="