You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

227 lines
4.9 KiB

# A股智投分析平台 - Docker 完整指南
## 📦 包含的内容
### 1. 启动脚本3套环境
| 脚本 | 用途 | 命令 |
|------|------|------|
| `dev-start.sh/bat` | 开发模式(热重载) | `./dev-start.sh` |
| `docker-start.sh/bat` | 生产模式 | `./docker-start.sh` |
| `verify-docker.js` | 部署验证 | `node verify-docker.js` |
### 2. Docker 配置2套
| 配置 | 用途 | 特点 |
|------|------|------|
| `docker-compose.dev.yml` | 开发环境 | Volume挂载热重载 |
| `docker-compose.yml` | 生产环境 | 完整构建,性能优化 |
### 3. 初始化脚本
| 脚本 | 用途 |
|------|------|
| `init-scripts/01-init-database.sql` | 创建分区表结构 |
| `init-scripts/02-seed-data.sql` | 插入种子数据 |
| `init-scripts/03-partition-maintenance.sql` | 分区维护工具 |
### 4. 文档
| 文档 | 内容 |
|------|------|
| `DOCKER_README.md` | 完整部署文档 |
| `DOCKER_SYNC.md` | 代码同步指南 |
| `DOCKER_QUICKREF.md` | 快速参考卡片 |
| `DOCKER_FILES.md` | 文件清单 |
---
## 🚀 快速开始
### 开发环境(推荐日常开发)
```bash
cd app/backend
./dev-start.sh # Linux/Mac
# 或
-dev-start.bat # Windows
```
特点:
- ✅ 代码修改自动同步
- ✅ 热重载,秒级生效
- ✅ 无需重建镜像
### 生产环境(部署测试)
```bash
cd app/backend
./docker-start.sh # Linux/Mac
# 或
docker-start.bat # Windows
```
特点:
- ✅ 完整构建,干净环境
- ✅ 性能优化
- ✅ 适合生产部署
---
## 📋 代码更改后的同步方式
### 方案对比
| 方案 | 启动命令 | 同步速度 | 适用场景 |
|------|---------|---------|---------|
| **开发模式** | `dev-start.sh` | 实时 | 日常开发 |
| **重建模式** | `docker-compose up --build` | 2-3分钟 | 生产部署 |
| **快速重启** | `docker-compose restart` | 10秒 | 配置更改 |
### 决策树
```
修改了代码?
├── 是
│ ├── 开发阶段 → 使用 dev-start.sh自动同步
│ └── 生产部署 → 使用 docker-start.sh重建镜像
└── 否(仅配置)
└── docker-compose restart app
```
---
## 🔧 常用操作
### 查看日志
```bash
# 开发环境日志
docker-compose -f docker-compose.dev.yml logs -f app
# 生产环境日志
docker-compose logs -f app
```
### 重启服务
```bash
# 开发环境
docker-compose -f docker-compose.dev.yml restart app
# 生产环境
docker-compose restart app
```
### 停止服务
```bash
# 开发环境
docker-compose -f docker-compose.dev.yml stop
# 生产环境
docker-compose stop
# 完全删除(包括数据)
docker-compose down -v
```
### 进入容器
```bash
# 进入应用容器
docker-compose exec app sh
# 进入 MySQL
docker-compose exec mysql mysql -u root -p1qazse42W3
# 进入 Redis
docker-compose exec redis redis-cli
```
---
## 📁 目录结构
```
app/backend/
├── docker-compose.yml # 生产配置
├── docker-compose.dev.yml # 开发配置 ⭐
├── Dockerfile # 应用镜像
├── .env.docker # 环境变量
├── .dockerignore # 忽略文件
├── dev-start.sh # 开发启动脚本 ⭐
├── dev-start.bat # 开发启动脚本(Win)
├── docker-start.sh # 生产启动脚本
├── docker-start.bat # 生产启动脚本(Win)
├── verify-docker.js # 验证脚本
├── DOCKER_README.md # 部署文档
├── DOCKER_SYNC.md # 同步指南 ⭐
├── DOCKER_QUICKREF.md # 速查卡片
├── DOCKER_FILES.md # 文件清单
├── init-scripts/ # 初始化脚本
│ ├── 01-init-database.sql # 分区表结构
│ ├── 02-seed-data.sql # 种子数据
│ └── 03-partition-maintenance.sql
└── src/ # 源代码
```
---
## 🎯 推荐工作流
### 日常开发流程
```bash
# 1. 启动开发环境
./dev-start.sh
# 2. 修改代码src/ 目录)
# 修改会自动同步到容器
# 3. 查看效果
# 访问 http://localhost:3000
# 4. 提交代码
# 正常使用 git
```
### 部署流程
```bash
# 1. 代码测试完成
# 2. 构建并启动生产环境
./docker-start.sh
# 3. 验证部署
node verify-docker.js
# 4. 完成
```
---
## 📞 故障排查
| 问题 | 解决方案 |
|------|---------|
| 代码不生效 | `docker-compose restart app` |
| 端口占用 | 修改 `docker-compose.yml` 端口映射 |
| 数据库错误 | `docker-compose down -v` 重新初始化 |
| 构建失败 | `docker builder prune -f` 清除缓存 |
---
## 📚 相关文档
- [完整部署指南](./DOCKER_README.md)
- [代码同步指南](./DOCKER_SYNC.md) ⭐
- [快速参考卡片](./DOCKER_QUICKREF.md)
- [Docker 文件清单](./DOCKER_FILES.md)