Files
martial-master/docs/guides/docker-deployment.md
T
Z-WICKandfactory-droid[bot] db6f85eef3 chore: 整理docs目录结构,添加Flyway插件
- 新增 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>
2026-01-26 10:29:02 +08:00

161 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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` 修复迁移记录