#!/bin/bash # ==================================================== # PostgreSQL Docker 快速启动脚本 # ==================================================== set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" echo "==========================================" echo "云酒馆 PostgreSQL 启动脚本" echo "==========================================" echo "" # 检查 Docker 是否安装 if ! command -v docker &> /dev/null; then echo "❌ 错误: 未检测到 Docker,请先安装 Docker" echo " 安装地址: https://www.docker.com/get-started" exit 1 fi # 检查 Docker Compose 是否安装 if ! command -v docker-compose &> /dev/null; then echo "❌ 错误: 未检测到 Docker Compose,请先安装" exit 1 fi # 检查 Docker 是否运行 if ! docker info &> /dev/null; then echo "❌ 错误: Docker 服务未运行,请先启动 Docker" exit 1 fi echo "✅ Docker 环境检查通过" echo "" # 创建必要的目录 mkdir -p postgres # 检查容器是否已经运行 if docker ps -a --format '{{.Names}}' | grep -q '^st-postgres$'; then echo "📦 检测到已存在的容器" if docker ps --format '{{.Names}}' | grep -q '^st-postgres$'; then echo " 容器正在运行中..." echo "" echo "如需重启,请先执行: $0 stop" exit 0 else echo " 正在启动已存在的容器..." docker-compose -f docker-compose.postgres.yml start fi else echo "🚀 首次启动,正在创建容器..." docker-compose -f docker-compose.postgres.yml up -d fi echo "" echo "⏳ 等待数据库启动..." sleep 3 # 检查数据库是否就绪 MAX_RETRIES=30 RETRY_COUNT=0 while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do if docker exec st-postgres pg_isready -U st_user -d st_dev &> /dev/null; then echo "✅ 数据库已就绪!" break fi RETRY_COUNT=$((RETRY_COUNT + 1)) echo " 等待中... ($RETRY_COUNT/$MAX_RETRIES)" sleep 2 done if [ $RETRY_COUNT -eq $MAX_RETRIES ]; then echo "❌ 数据库启动超时,请检查日志:" echo " docker-compose -f docker-compose.postgres.yml logs postgres" exit 1 fi echo "" echo "==========================================" echo "✨ PostgreSQL 启动成功!" echo "==========================================" echo "" echo "📝 数据库连接信息:" echo " Host: localhost" echo " Port: 5432" echo " Database: st_dev" echo " Username: st_user" echo " Password: st_password" echo "" echo "🌐 pgAdmin 管理界面:" echo " URL: http://localhost:5050" echo " Email: admin@st.local" echo " Pass: admin123" echo "" echo "📊 常用命令:" echo " 查看日志: docker-compose -f docker-compose.postgres.yml logs -f" echo " 停止服务: $0 stop" echo " 重启服务: $0 restart" echo " 查看状态: docker-compose -f docker-compose.postgres.yml ps" echo " 进入数据库: docker exec -it st-postgres psql -U st_user -d st_dev" echo "" echo "=========================================="