🚀 ECS全栈应用
部署在AWS ECS上的具有企业级功能的生产就绪全栈应用程序
🌐 现场演示 • 📖 文档 • 🚀 快速开始 • 🏗️ 建筑
______________________________________________________________________
✨ 特性
🔥 现代技术栈
- 后端:Node.js+Express.js API
- 前端:Next.js+React SPA
- 容器化:Docker和Docker Compose
- 云:AWS ECS+ECR+ALB
🛡️ 企业安全
- SSL/HTTPS加密
- CORS保护
- 非根容器
- VPC网络隔离
⚡ 生产就绪
- 自动缩放功能
- 健康检查监测
- 负载均衡器集成
- CloudWatch日志记录
🎯 开发者体验
- 热装开发
- 多阶段Docker构建
- CI/CD管道就绪
- 基础设施即代码
______________________________________________________________________
🏗️ 建筑
graph TB
subgraph "AWS Cloud"
ALB[Application Load Balancer
SSL/HTTPS]
subgraph "ECS Cluster"
API[Node.js API
Port 3001]
WEB[Next.js Frontend
Port 3000]
end
subgraph "Container Registry"
ECR1[ECR: API Image]
ECR2[ECR: Frontend Image]
end
CW[CloudWatch
Logs & Monitoring]
end
USER[👤 Users] --> ALB
ALB --> API
ALB --> WEB
WEB --> API
API --> CW
WEB --> CW
ECR1 --> API
ECR2 --> WEB______________________________________________________________________
🚀 快速开始
先决条件
- Docker&Docker编写
- AWS CLI已配置
- Node.js 18+(本地开发可选)
🐳 地方发展
# Clone the repository
git clone https://github.com/AKRAMSOUIDA/ECS_fullstack_app.git
cd ECS_fullstack_app/fullstack-app
# Start all services
docker compose up --build
# 🎉 Access your applications
# Frontend: http://localhost:3000
# API: http://localhost:3001☁️ AWS部署
# Build and push to ECR
./deploy.sh
# Deploy to ECS
terraform apply______________________________________________________________________
📁 项目结构
fullstack-app/
├── 🔧 api/ # Node.js Express API
│ ├── server.js # Main server application
│ ├── package.json # Dependencies & scripts
│ └── Dockerfile # Container configuration
├── 🎨 frontend/ # Next.js React App
│ ├── pages/ # Application pages
│ ├── components/ # Reusable components
│ ├── public/ # Static assets
│ ├── package.json # Dependencies & scripts
│ └── Dockerfile # Container configuration
├── 🏗️ Terraform/ # Infrastructure as Code
├── 🐳 docker-compose.yml # Local development
├── 📋 deployment-guide.md # Deployment instructions
└── 📖 README.md # You are here!______________________________________________________________________
🔌 API终点
健康检查
GET /health{
"status": "OK",
"timestamp": "2025-06-27T08:00:00.000Z"
}用户管理
GET /api/users # Get all users
POST /api/users # Create new user示例响应:
[
{
"id": 1,
"name": "John Doe",
"email": "john@example.com"
}
]______________________________________________________________________
🛠️ 技术栈
🔙 后端
- 运行时:Node.js 18+
- 框架:Express.js
- 特性:REST API、CORS、运行状况检查
- 容器:Alpine Linux
🎨 前端
- 框架:Next.js 14
- 图书馆:反应18
- 特性:SSR,API路线,响应式
- 构建:生产优化
☁️ 基础设施
- 计算:AWS云服务器Fargate
- 注册表:亚马逊ECR
- 负载均衡器:LB应用程序
- 监控:云观察
______________________________________________________________________
🔧 配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
NODE_ENV | 环境模式 | development |
PORT | 服务器端口 | 3001 |
NEXT_PUBLIC_API_URL | API端点URL | http://localhost:3001 |
Docker配置
- ✅ 多阶段构建以实现优化
- ✅ 非root用户安全
- ✅ 用于监测的健康检查
- ✅ Alpine Linux实现最小尺寸
______________________________________________________________________
📊 性能与监控
🎯 优化
- 容器:多阶段Docker构建
- 前端:静态生成和代码拆分
- 缓存:高效的Docker层缓存
- 资源:适当的CPU/内存限制
📈 监控
- 健康检查:容器和应用程序级别
- 日志记录:结构化JSON日志到CloudWatch
- 指标:CPU、内存和自定义指标
- 警报:自动监控警报
______________________________________________________________________
🚀 部署选项
| 服务 | 用例 | 复杂性 | 成本 |
|---|---|---|---|
| AWS ECS | 生产应用程序 | 中等 | $$ |
| AWS应用程序运行程序 | 简单部署 | 低 | $ |
| AWS Lambda | 无服务器 | 低 | $ |
______________________________________________________________________
🛡️ 安全功能
- 🔒 SSL/HTTPS:端到端加密
- 🌐 跨域资源共享:正确的跨产地处理
- 🐳 集装箱安全:非root用户
- 🔐 环境变量:安全配置管理
- 🏠 垂直路径计算机:隔离网络环境
- ↩️ HTTP重定向:自动HTTPS重定向
______________________________________________________________________
📚 文档
______________________________________________________________________
🤝 贡献
我们欢迎捐款!以下是如何开始:
- 🍴 分叉存储库
- 🌿 创建要素分支(
git checkout -b feature/amazing-feature) - 💻 进行更改
- 🧪 本地测试
docker compose up - 📝 提交您的更改(
git commit -m 'Add amazing feature') - 🚀 推到分支(
git push origin feature/amazing-feature) - 🎯 打开拉取请求
______________________________________________________________________
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
______________________________________________________________________
🙏 致谢
- 内置于❤️ 使用AWS服务
- 由现代网络技术提供支持
- 受云原生最佳实践的启发
______________________________________________________________________
⭐ 如果你觉得这个repo有用,请将其标记为星号!
由以下材料制成❤️ 靠近 AKRAM SOUIDA
