一个基于Web的多语言在线代码编译与运行平台,支持安全隔离的代码执行环境。
- 🎨 现代化UI: 基于React + TypeScript + Monaco Editor
- 🔒 安全隔离: Docker容器沙箱执行
- 🌐 多语言支持: Python, Java, C/C++, JavaScript, Go等
- ⚡ 高性能: 异步任务队列,支持并发执行
- 📊 资源监控: 实时监控CPU、内存、执行时间
- 👥 用户系统: 注册登录、代码历史、分享功能
- 🔐 企业级安全: JWT认证、HTTPS、资源限制
- React 18 + TypeScript
- Monaco Editor (VS Code编辑器)
- Ant Design / Tailwind CSS
- Axios + React Query
- Zustand (状态管理)
- Node.js + Express + TypeScript
- Prisma ORM
- PostgreSQL
- Redis (缓存 + 任务队列)
- Bull (任务队列)
- JWT认证
- Docker + Docker Compose
- Nginx (反向代理)
- GitHub Actions (CI/CD)
Online-Compilation-System/
├── frontend/ # React前端应用
├── backend/ # Express后端API
├── worker/ # 代码执行Worker
├── executor/ # 各语言执行容器
│ ├── python/
│ ├── java/
│ ├── cpp/
│ ├── javascript/
│ └── go/
├── nginx/ # Nginx配置
├── database/ # 数据库迁移文件
├── docker-compose.yml # 开发环境
├── docker-compose.prod.yml # 生产环境
└── docs/ # 项目文档
- Node.js >= 18.0.0
- Docker >= 20.10.0
- Docker Compose >= 2.0.0
- PostgreSQL >= 14.0
- Redis >= 6.0
- 克隆仓库
git clone https://github.com/Dajucoder/Online-Compilation-System.git
cd Online-Compilation-System- 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入必要的配置- 启动所有服务
docker-compose up -d- 等待服务就绪
服务启动后,系统会自动:
- 初始化数据库表结构
- 创建默认管理员账号
默认管理员账号:
- 用户名:
admin - 邮箱:
admin@example.com - 密码:
admin123456
- 访问应用
- 前端: http://localhost:3000
- 后端API: http://localhost:8000
- API文档: http://localhost:8000/api-docs
前端开发
cd frontend
npm install
npm run dev后端开发
cd backend
npm install
npm run devWorker开发
cd worker
npm install
npm run dev查看 .env.example 文件了解所有可配置项。
核心配置:
DATABASE_URL: PostgreSQL连接字符串REDIS_URL: Redis连接字符串JWT_SECRET: JWT密钥DOCKER_HOST: Docker守护进程地址MAX_EXECUTION_TIME: 最大执行时间(秒)MAX_MEMORY: 最大内存限制(MB)
启动后访问 http://localhost:8000/api-docs 查看完整的API文档。
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录POST /api/execute- 执行代码GET /api/execute/:id- 查询执行结果GET /api/submissions- 获取提交历史POST /api/share- 分享代码
docker-compose up -ddocker-compose -f docker-compose.prod.yml up -d# 构建所有镜像
docker-compose build
# 构建特定服务
docker-compose build frontend
docker-compose build backend- ✅ Docker容器隔离
- ✅ 资源限制(CPU/内存/磁盘/时间)
- ✅ 网络隔离(无外网访问)
- ✅ 危险代码检测
- ✅ 请求频率限制
- ✅ HTTPS加密传输
- ✅ XSS/CSRF防护
- ✅ SQL注入防护
| 语言 | 版本 | 状态 |
|---|---|---|
| Python | 3.11 | ✅ |
| Java | 17 | ✅ |
| C/C++ | GCC 11 | ✅ |
| JavaScript | Node 18 | ✅ |
| Go | 1.21 | ✅ |
| Rust | 1.70 | 🚧 |
| C# | .NET 7 | 🚧 |
- 平均响应时间: < 100ms (不含执行时间)
- 并发支持: 100+ 同时执行
- 容器启动时间: < 2s
- 支持QPS: 1000+
欢迎贡献!请查看 CONTRIBUTING.md 了解详情。
- Fork本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启Pull Request
- 基础架构搭建
- 用户认证系统
- 代码执行引擎
- 代码分享功能
- 实时协作编辑
- 题库系统
- AI代码助手
- 移动端适配
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
- Dajucoder - GitHub
有问题或建议?欢迎提Issue或联系我!
⭐ 如果这个项目对你有帮助,请给个Star!