- 新增 docs/guides/ 目录存放有用文档 - 新增 docker-deployment.md Docker部署指南 - 删除20+临时报告和过时文档 - 添加 flyway-maven-plugin 用于数据库迁移管理 - docker-compose 改用 Dockerfile.quick 快速构建 Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
161 lines
3.5 KiB
Markdown
161 lines
3.5 KiB
Markdown
# Docker 部署指南
|
||
|
||
本项目提供三种 Docker 构建方式,适用于不同场景。
|
||
|
||
## 构建方式对比
|
||
|
||
| 方式 | Dockerfile | 适用场景 | 构建速度 | 依赖条件 |
|
||
|------|------------|----------|----------|----------|
|
||
| 快速构建 | `Dockerfile.quick` | 本地开发迭代 | 最快 | 本地已编译 JAR |
|
||
| 离线构建 | `Dockerfile` | CI/CD 离线环境 | 中等 | 需要 `.m2-repo` 目录 |
|
||
| 完整构建 | `Dockerfile.fullbuild` | 全新环境 | 最慢 | 需要 martial-tool 源码 |
|
||
|
||
---
|
||
|
||
## 方式一:快速构建(推荐日常开发)
|
||
|
||
适用于本地开发,需要先在本地编译项目。
|
||
|
||
```bash
|
||
# 1. 本地编译
|
||
mvn clean package -DskipTests
|
||
|
||
# 2. 构建镜像并启动
|
||
docker-compose up --build
|
||
```
|
||
|
||
或一条命令:
|
||
|
||
```bash
|
||
mvn clean package -DskipTests && docker-compose up --build
|
||
```
|
||
|
||
**前提条件**:
|
||
- 本地已安装 JDK 17+ 和 Maven 3.9+
|
||
- martial-tool 依赖已安装到本地 Maven 仓库
|
||
|
||
**docker-compose.yml 配置**:
|
||
```yaml
|
||
martial-api:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile.quick
|
||
```
|
||
|
||
---
|
||
|
||
## 方式二:离线构建
|
||
|
||
适用于 CI/CD 环境或无法访问 Maven 仓库的场景。
|
||
|
||
```bash
|
||
# 1. 准备离线依赖(首次或依赖变更时执行)
|
||
cp -r ~/.m2/repository .m2-repo
|
||
|
||
# 2. 构建镜像并启动
|
||
docker-compose up --build
|
||
```
|
||
|
||
**前提条件**:
|
||
- 本地 `~/.m2/repository` 包含所有项目依赖
|
||
- `.m2-repo` 目录已复制到项目根目录
|
||
|
||
**docker-compose.yml 配置**:
|
||
```yaml
|
||
martial-api:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
```
|
||
|
||
**注意**:`.m2-repo` 目录较大(通常几百MB),建议添加到 `.gitignore`。
|
||
|
||
---
|
||
|
||
## 方式三:完整构建
|
||
|
||
适用于全新环境,从零开始构建整个项目(包括 BladeX 框架)。
|
||
|
||
```bash
|
||
# 需要在包含 martial-tool 和 martial-master 的父目录执行
|
||
cd /path/to/parent-directory
|
||
docker build -f martial-master/Dockerfile.fullbuild -t martial-api:latest .
|
||
```
|
||
|
||
**目录结构要求**:
|
||
```
|
||
parent-directory/
|
||
├── martial-tool/ # BladeX 框架源码
|
||
└── martial-master/ # 本项目
|
||
```
|
||
|
||
**特点**:
|
||
- 完全自包含,不依赖本地环境
|
||
- 构建时间最长(需编译两个项目)
|
||
- 适合首次部署或 CI/CD 完整构建
|
||
|
||
---
|
||
|
||
## 常用命令
|
||
|
||
```bash
|
||
# 启动所有服务
|
||
docker-compose up -d
|
||
|
||
# 重新构建并启动
|
||
docker-compose up -d --build
|
||
|
||
# 强制重新创建容器
|
||
docker-compose up -d --force-recreate
|
||
|
||
# 查看日志
|
||
docker logs -f martial-api
|
||
|
||
# 停止所有服务
|
||
docker-compose down
|
||
|
||
# 停止并删除数据卷(慎用,会清除数据库数据)
|
||
docker-compose down -v
|
||
```
|
||
|
||
---
|
||
|
||
## 环境变量
|
||
|
||
可在 `docker-compose.yml` 中配置以下环境变量:
|
||
|
||
| 变量 | 说明 | 默认值 |
|
||
|------|------|--------|
|
||
| `SPRING_PROFILE` | Spring 配置文件 | `docker` |
|
||
| `JAVA_OPTS` | JVM 参数 | `-Xms512m -Xmx1024m -XX:+UseG1GC` |
|
||
| `SPRING_DATASOURCE_URL` | 数据库连接 | 见 docker-compose.yml |
|
||
| `SPRING_DATA_REDIS_HOST` | Redis 地址 | `redis` |
|
||
|
||
---
|
||
|
||
## 故障排查
|
||
|
||
### 1. JAR 文件不存在
|
||
```
|
||
COPY target/blade-api.jar: not found
|
||
```
|
||
**解决**:先执行 `mvn clean package -DskipTests`
|
||
|
||
### 2. .m2-repo 目录不存在
|
||
```
|
||
COPY .m2-repo: not found
|
||
```
|
||
**解决**:执行 `cp -r ~/.m2/repository .m2-repo` 或改用 `Dockerfile.quick`
|
||
|
||
### 3. martial-tool 目录不存在
|
||
```
|
||
COPY martial-tool: not found
|
||
```
|
||
**解决**:确保在正确的父目录执行,或改用其他构建方式
|
||
|
||
### 4. Flyway 迁移失败
|
||
```
|
||
Migration checksum mismatch
|
||
```
|
||
**解决**:执行 `mvn flyway:repair` 修复迁移记录
|