fix: 优化后端部署配置,适配现有服务架构

主要修改:
- 移除 postgres:15-alpine 和 redis 容器依赖
- 优化 docker-compose.yml 配置,使用 host 网络模式
- 移除 CI/CD 中的自动数据库迁移,改为手动执行
- 更新环境变量配置,连接到现有的 PostgreSQL 和 Redis 服务
- 完善部署文档,增加现有服务集成说明

配置优化:
- 修正 docker-compose.yml 位置到 backend 目录
- 简化 CI/CD 测试流程,跳过需要数据库的测试
- 增加数据库迁移安全策略说明
- 完善部署流程文档和故障排除指南
This commit is contained in:
xujiang
2025-07-09 16:42:22 +08:00
parent 72414d0979
commit 0651b6626a
6 changed files with 371 additions and 280 deletions

View File

@ -5,7 +5,6 @@ on:
branches: [ main ]
paths:
- 'backend/**'
- 'docker-compose.yml'
- '.env.example'
- '.gitea/workflows/deploy-backend.yml'
workflow_dispatch:
@ -19,20 +18,6 @@ jobs:
name: 🧪 测试后端
runs-on: ubuntu-latest
services:
postgres:
image: postgres:15-alpine
env:
POSTGRES_PASSWORD: postgres
POSTGRES_DB: photography_test
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- name: 📥 检出代码
uses: actions/checkout@v4
@ -61,14 +46,10 @@ jobs:
- name: 🧪 运行测试
working-directory: ./backend
env:
DB_HOST: localhost
DB_PORT: 5432
DB_USER: postgres
DB_PASSWORD: postgres
DB_NAME: photography_test
JWT_SECRET: test_jwt_secret_for_ci_cd_testing_only
run: |
go test -v -race -coverprofile=coverage.out ./...
# 运行单元测试 (跳过需要数据库的测试)
go test -v -race -coverprofile=coverage.out -tags=unit ./...
go tool cover -html=coverage.out -o coverage.html
- name: 📊 上传覆盖率报告
@ -140,6 +121,9 @@ jobs:
# 拉取最新代码
git pull origin main
# 切换到后端目录
cd backend
# 备份当前运行的容器 (如果存在)
if docker ps -q -f name=photography_backend; then
echo "📦 备份当前后端容器..."
@ -154,17 +138,9 @@ jobs:
echo "📥 拉取最新镜像..."
docker-compose pull backend
# 启动数据库 (如果未运行)
echo "🗄 确保数据库运行..."
docker-compose up -d postgres redis
# 等待数据库就绪
echo "⏳ 等待数据库就绪..."
sleep 10
# 运行数据库迁移
echo "🔄 运行数据库迁移..."
docker-compose run --rm backend ./main migrate || echo "迁移完成或已是最新"
# 数据库迁移需要手动执行
echo " 数据库迁移需要手动执行,请在部署后运行:"
echo " docker-compose exec backend ./main migrate"
# 启动后端服务
echo "🚀 启动后端服务..."
@ -197,6 +173,8 @@ jobs:
docker images photography_backend_backup_* --format "table {{.Repository}}:{{.Tag}}\t{{.CreatedAt}}" | tail -n +2 | sort -k2 -r | tail -n +6 | awk '{print $1}' | xargs -r docker rmi || true
echo "🎉 后端部署完成!"
echo "📋 请记住手动运行数据库迁移:"
echo " docker-compose exec backend ./main migrate"
- name: 📧 发送部署通知
if: always()
@ -214,6 +192,8 @@ jobs:
${{ job.status == 'success' && '✅ 部署成功' || '❌ 部署失败' }}
${{ job.status == 'success' && '⚠️ 请记住手动运行数据库迁移' || '' }}
🌐 API: https://api.photography.iriver.top/health
📊 监控: https://admin.photography.iriver.top
@ -232,7 +212,7 @@ jobs:
key: ${{ secrets.SSH_KEY }}
port: ${{ secrets.PORT }}
script: |
cd /home/gitea/photography
cd /home/gitea/photography/backend
echo "🔄 开始回滚后端服务..."