# MangTool Docker 部署 前后端单容器部署:拉代码后进入 `docker` 目录,执行启动脚本即可。 ## 环境要求 - Docker - Docker Compose(v2 推荐:`docker compose`) ## 部署步骤 ### 1. 拉取代码 ```bash git clone <仓库地址> cd MyTool ``` ### 2. 启动服务 **Linux / macOS:** ```bash cd docker chmod +x start.sh ./start.sh ``` **Windows:** 在资源管理器中进入 `docker` 目录,双击运行 `start.bat`;或在终端执行: ```cmd cd docker start.bat ``` 或直接使用 docker compose: ```bash cd docker docker compose up -d --build ``` ### 3. 访问应用 浏览器打开:**http://localhost:8080** 前端与后端由同一服务提供,无需单独配置 API 地址。 ## 常用命令 | 操作 | 命令 | |------------|------------------------------| | 后台启动 | `docker compose up -d --build` | | 查看日志 | `docker compose logs -f` | | 停止并删除 | `docker compose down` | | 仅重新构建 | `docker compose build --no-cache` | | 查看状态 | `docker compose ps` | | 健康检查 | `docker compose exec mangtool wget -q -O- http://localhost:8080/api/health` | ## 端口与数据 - **端口**:宿主机 `8080` 映射容器 `8080`,可在 `docker-compose.yml` 中修改左侧端口,例如 `"8888:8080"`。 - **数据**:工具读写路径在容器内;若需挂载宿主机目录(如音乐库、输入输出目录),在 `docker-compose.yml` 中取消 `volumes` 注释并改为实际路径。 ## 构建说明 - **Dockerfile**:多阶段构建 1. 使用 Node 20 构建前端(Vite),产出到 `dist` 2. 使用 Maven + JDK 8 构建后端,并将前端 `dist` 拷贝到 `src/main/resources/static` 3. 运行阶段使用 `eclipse-temurin:8-jre-alpine`,仅运行打包好的 Spring Boot jar 4. 内置健康检查(每 30 秒检查 `/api/health` 端点) - 生产环境前端 API/WebSocket 使用相对路径,与后端同源,无需再配 CORS。 - 已配置 `.dockerignore` 优化构建上下文,加快构建速度。 - **Maven 镜像**:已配置使用阿里云 Maven 镜像加速依赖下载,解决网络问题。 ## 故障排查 ### Maven 依赖下载失败 如果构建时遇到 Maven 依赖下载失败(如 `handshake_failure` 或网络超时): 1. **检查网络连接**:确保 Docker 容器可以访问外网 2. **使用国内镜像**:已默认配置阿里云镜像,如仍有问题可修改 `docker/maven-settings.xml` 3. **清理缓存重建**: ```bash docker compose down docker compose build --no-cache docker compose up -d ``` ### 端口被占用 如果 8080 端口已被占用,修改 `docker-compose.yml` 中的端口映射: ```yaml ports: - "8888:8080" # 改为其他端口 ``` ### 查看详细日志 ```bash # 查看构建日志 docker compose build --progress=plain # 查看运行日志 docker compose logs -f mangtool ```