这是一个使用GitHub Actions进行自动化部署的全栈应用示例项目,包含React前端和Node.js后端服务。
.
├── src/ # React前端源代码
├── public/ # 静态资源
├── backend/ # Node.js后端服务
├── .github/ # GitHub Actions配置
├── k8s/ # Kubernetes配置文件
├── Dockerfile # Docker构建文件
├── nginx.conf # Nginx配置文件
└── README.md # 项目文档
- React单页应用
- 现代化UI界面
- 自动化构建部署
- GitHub Webhook处理
- Repository Dispatch事件触发
- 健康检查接口
- Express.js REST API
- 安装依赖:
npm install --legacy-peer-deps
- 启动开发服务器:
npm start
- 构建生产版本:
npm run build
- 进入后端目录:
cd backend
- 安装依赖:
npm install
- 配置环境变量:
cp .env.example .env
- 启动服务:
npm run dev # 开发模式
npm start # 生产模式
项目使用多阶段构建,将前后端服务打包到同一个容器中:
# 构建镜像
docker build -t my-fullstack-app .
# 运行容器
docker run -d -p 80:80 \
-e GITHUB_TOKEN=your_github_token \
my-fullstack-app
本项目使用GitHub Actions实现自动化部署,部署流程如下:
- 当代码推送到main分支时触发部署流程
- GitHub Actions执行以下步骤:
- 检出代码
- 设置Docker Buildx
- 登录到容器仓库
- 构建并推送Docker镜像
- 配置Kubernetes凭证
- 应用Kubernetes配置
- 更新Deployment镜像版本
ACR_REGISTRY
: 容器仓库地址ACR_PASSWORD
: 容器仓库密码KUBECONFIG
: Kubernetes配置文件内容GITHUB_TOKEN
: GitHub个人访问令牌
变量名 | 描述 | 默认值 |
---|---|---|
PORT | 后端服务端口 | 3000 |
GITHUB_TOKEN | GitHub个人访问令牌 | - |
NODE_ENV | 运行环境 | development |
应用将被部署到Kubernetes集群中,使用以下资源:
- Deployment: 管理应用的Pod
- 2个副本
- 资源限制:CPU 200m,内存 256Mi
- 资源请求:CPU 100m,内存 128Mi
- Service: 暴露应用服务
- 类型:ClusterIP
- 端口:80
- Ingress: 配置外部访问路由
- 路径:/
- 重写目标:/
如果需要手动部署到Kubernetes集群,可以执行以下命令:
# 替换配置文件中的容器仓库地址
sed -i "s|\${ACR_REGISTRY}|your-registry-url|g" k8s/deployment.yaml
# 应用Kubernetes配置
kubectl apply -f k8s/deployment.yaml
- 前端界面:
http://your-domain/
- 后端API:
http://your-domain/api/
- 健康检查:
http://your-domain/health
-
安全性
- 不要在代码中硬编码敏感信息
- 确保
.env
文件已添加到.gitignore
- 使用安全的方式管理环境变量和密钥
-
开发建议
- 前端开发时使用
npm start
- 后端开发时使用
npm run dev
- 使用 Docker Compose 进行本地集成测试
- 前端开发时使用
-
部署说明
- 使用多阶段构建优化镜像大小
- 确保设置正确的环境变量
- 建议使用容器编排工具进行管理