3.0 KiB
3.0 KiB
Gitea CI/CD 部署指南
本文档描述了 aiot-platform-ui (Web Antd 端) 的自动化构建与部署流程。
1. 架构说明
项目采用 Gitea Actions + Docker 进行部署。
- 构建方式:Docker 多阶段构建 (Multi-stage Build)。
- Stage 1:
node:20-alpine-> 安装依赖 ->pnpm build:web-antd-> 生成dist。 - Stage 2:
nginx:alpine-> 复制dist-> 启动 Web 服务。
- Stage 1:
- 运行环境:目标服务器 (安装了 Gitea Runner 和 Docker)。
- 网络模式:容器加入
aiot-net网络,端口映射到宿主机。
2. 前置准备
在使用 CI/CD 前,请确保目标服务器满足以下条件:
- 安装 Docker:
docker -v可用。 - 配置 Gitea Runner:
- Runner 已注册到 Gitea。
- Runner 有权限访问 Docker Socket (
/var/run/docker.sock)。
- Docker 网络:
- 项目使用 1Panel 的默认网络
1panel-network - CI/CD 会自动检查网络是否存在,如果不存在则创建
- 确保前端和后端容器都在同一个网络中
- 项目使用 1Panel 的默认网络
3. 端口规划
| 服务名称 | 容器端口 | 宿主机端口 (Host Port) | 说明 |
|---|---|---|---|
| aiot-web-antd | 80 | 9090 | 前端 Web 服务,请在 1Panel 中反代此端口 |
| aiot-server | 48080 | 48080 | 后端 API 服务 (参考) |
注意:如果 9090 端口已被占用,请修改
.gitea/workflows/deploy-web.yaml中的HOST_PORT变量。
部署失败:端口已被占用 (port is already allocated)
- 原因:宿主机端口被其他容器或服务占用。
- 解法:
- 修改 workflow 中的
HOST_PORT为其他端口(如 8082、8083)。 - 或者手动停止占用端口的容器:
docker ps | grep <端口号>然后docker stop <容器名>。
- 修改 workflow 中的
4. 1Panel 配置指南
由于容器运行在 127.0.0.1:8080,需要在 1Panel (或 Nginx) 中配置反向代理以通过域名访问。
- 进入 1Panel -> 网站 -> 创建网站。
- 域名: 填写你的域名 (e.g.,
admin.example.com)。 - 类型:
反向代理。 - 代理地址:
http://127.0.0.1:9090。 - 提交。
5. 常见问题排查
构建失败:pnpm install 很慢或超时
- 原因:网络问题。
- 解法:Dockerfile 中已配置 npm 淘宝源。如果依然慢,考虑在 Runner 机器上配置透明代理。
部署失败:Permission denied 访问 Docker
- 原因:Gitea Runner 用户没有 Docker 组权限。
- 解法:
- 在服务器执行:
sudo usermod -aG docker <runner-user>。 - 或者在 workflow yaml 中开启
privileged: true(不推荐)。
- 在服务器执行:
页面刷新 404
- 原因:Nginx 未配置 SPA 重定向。
- 解法:检查
apps/web-antd/nginx.conf是否包含try_files $uri $uri/ /index.html;。
6. 如何触发部署
- 修改代码后,推送到
master分支:git add . git commit -m "feat: 更新功能" git push origin master - 前往 Gitea 仓库页面 -> Actions 查看构建进度。