Files
everything-is-suitable/DEPLOYMENT.md
T
张翔 08ea5fbe98 feat(admin): 添加用户管理相关文件
添加用户管理视图、API和状态管理文件
2026-03-28 14:37:29 +08:00

8.6 KiB
Raw Blame History

CI/CD部署文档

架构概览

本项目采用Forgejo + Woodpecker CI + Docker Registry的CI/CD架构,通过docker-compose进行容器化部署。

┌─────────────────────────────────────────────────────────────┐
│                    Forgejo (代码仓库)                        │
│                    Woodpecker CI (CI/CD)                    │
│                    Docker Registry (镜像仓库)                │
└─────────────────────────────────────────────────────────────┘
                              ↓
                    构建Docker镜像并推送
                              ↓
┌─────────────────────────────────────────────────────────────┐
│                  docker-compose 部署                        │
├─────────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐    │
│  │   API容器     │  │  Admin容器    │  │ UniApp容器   │    │
│  │ (Spring Boot) │  │   (Nginx)    │  │   (Nginx)    │    │
│  └──────────────┘  └──────────────┘  └──────────────┘    │
│  ┌──────────────┐                                           │
│  │ PostgreSQL   │                                           │
│  └──────────────┘                                           │
└─────────────────────────────────────────────────────────────┘

项目结构

everything-is-suitable/
├── everything-is-suitable-api/          # Spring Boot API
│   ├── Dockerfile                      # API镜像构建文件
│   └── pom.xml                        # Maven配置
├── everything-is-suitable-admin/        # Vue 3 Admin
│   ├── Dockerfile                      # Admin镜像构建文件
│   ├── nginx.conf                      # Nginx配置
│   └── package.json                   # npm配置
├── everything-is-suitable-uniapp/      # UniApp移动端
│   ├── Dockerfile                      # UniApp镜像构建文件
│   ├── nginx.conf                      # Nginx配置
│   └── package.json                   # npm配置
├── docker-compose.yml                  # 生产环境部署编排
└── .woodpecker.yml                    # Woodpecker CI配置

本地开发

前置要求

  • Docker 20.10+
  • Docker Compose 2.0+
  • Node.js 20+
  • Java 21+
  • Maven 3.9+

启动开发环境

# 启动数据库
docker-compose up -d postgres

# 启动API
cd everything-is-suitable-api
mvn spring-boot:run -Dspring-boot.run.profiles=local

# 启动Admin
cd ../everything-is-suitable-admin
npm run dev

# 启动UniApp
cd ../everything-is-suitable-uniapp
npm run dev:h5

CI/CD流程

Woodpecker CI流水线

Woodpecker CI在每次代码提交时自动执行以下步骤:

  1. 代码检查

    • API: mvn spotless:check
    • Admin: npm run lint
    • UniApp: npm run lint
  2. 单元测试

    • API: mvn test
    • Admin: npm run test
    • UniApp: npm run test
  3. E2E测试

    • Admin: npm run test:e2e
    • UniApp: npm run test:e2e
  4. 构建Docker镜像

    • 推送到Docker Registry
    • 标签: latest${CI_COMMIT_SHA:0:8}
  5. 部署

    • SSH连接到部署服务器
    • 拉取最新镜像
    • 重启容器

Woodpecker Secrets配置

在Forgejo仓库设置中配置以下Secrets

Secret名称 说明 示例
DOCKER_REGISTRY Docker Registry地址 registry.example.com
DOCKER_USERNAME Docker用户名 your-username
DOCKER_PASSWORD Docker密码 your-password
SSH_PRIVATE_KEY SSH私钥 -----BEGIN RSA PRIVATE KEY-----...
DEPLOY_HOST 部署服务器地址 deploy.example.com
DEPLOY_USER 部署服务器用户名 deploy
DEPLOY_PATH 部署路径 /opt/everything-is-suitable

生产部署

1. 准备部署环境

# 安装Docker和Docker Compose
curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER

# 创建部署目录
mkdir -p /opt/everything-is-suitable
cd /opt/everything-is-suitable

# 复制配置文件
cp docker-compose.yml .
cp .env.example .env

2. 配置环境变量

编辑 .env 文件:

# 数据库密码
POSTGRES_PASSWORD=your_secure_password

# Docker Registry配置
DOCKER_REGISTRY=registry.example.com
DOCKER_USERNAME=your-username
DOCKER_PASSWORD=your-password

3. 启动服务

# 拉取镜像
docker-compose pull

# 启动所有服务
docker-compose up -d

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

4. 验证部署

# 检查API健康状态
curl http://localhost:8080/actuator/health

# 检查Admin页面
curl http://localhost/

# 检查UniApp页面
curl http://localhost:8081/

服务端口

服务 端口 说明
Admin 80 管理后台
API 8080 后端API
UniApp 8081 移动端H5
PostgreSQL 5432 数据库

常用命令

Docker Compose

# 启动所有服务
docker-compose up -d

# 停止所有服务
docker-compose down

# 重启服务
docker-compose restart

# 查看日志
docker-compose logs -f [service-name]

# 查看服务状态
docker-compose ps

# 更新镜像并重启
docker-compose pull && docker-compose up -d

容器管理

# 查看运行中的容器
docker ps

# 查看容器日志
docker logs -f [container-id]

# 进入容器
docker exec -it [container-id] sh

# 重启容器
docker restart [container-id]

监控和日志

日志查看

# API日志
docker-compose logs -f api

# Admin日志
docker-compose logs -f admin

# UniApp日志
docker-compose logs -f uniapp

# 数据库日志
docker-compose logs -f postgres

# 所有服务日志
docker-compose logs -f

健康检查

# 检查所有服务健康状态
docker-compose ps

# 检查API健康端点
curl http://localhost:8080/actuator/health

# 检查数据库连接
docker-compose exec postgres pg_isready -U postgres

备份和恢复

数据库备份

# 备份数据库
docker-compose exec postgres pg_dump -U postgres everything_is_suitable > backup.sql

# 恢复数据库
docker-compose exec -T postgres psql -U postgres everything_is_suitable < backup.sql

数据卷备份

# 备份PostgreSQL数据卷
docker run --rm -v everything-is-suitable_postgres_data:/data -v $(pwd):/backup alpine tar czf /backup/postgres_data_backup.tar.gz -C /data .

# 恢复PostgreSQL数据卷
docker run --rm -v everything-is-suitable_postgres_data:/data -v $(pwd):/backup alpine tar xzf /backup/postgres_data_backup.tar.gz -C /data

故障排查

容器无法启动

# 查看容器日志
docker-compose logs [service-name]

# 检查容器状态
docker-compose ps

# 检查资源使用
docker stats

网络问题

# 检查网络连接
docker network ls
docker network inspect everything-is-suitable_app-network

# 测试容器间连接
docker-compose exec api ping postgres

性能问题

# 查看资源使用
docker stats

# 查看容器资源限制
docker inspect [container-id] | grep -A 10 Memory

安全建议

  1. 修改默认密码

    • 修改PostgreSQL密码
  2. 网络隔离

    • 使用Docker网络隔离服务
    • 只暴露必要的端口
  3. 定期更新

    • 定期更新Docker镜像
    • 更新依赖包
  4. 备份策略

    • 定期备份数据库
    • 备份配置文件
  5. 监控告警

    • 配置Prometheus监控
    • 配置Grafana仪表盘
    • 设置告警规则

扩展阅读