diff --git a/docker/Dockerfile b/docker/Dockerfile index 28327d3..353abd0 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -15,15 +15,36 @@ RUN npm run build FROM maven:3.8-eclipse-temurin-8-alpine AS backend-builder WORKDIR /app +# 配置 Maven 使用阿里云镜像(加速下载,解决网络问题) +RUN mkdir -p /root/.m2 && \ + cat > /root/.m2/settings.xml << 'EOF' + + + + + aliyunmaven + central + 阿里云公共仓库 + https://maven.aliyun.com/repository/public + + + +EOF + # 复制后端源码 COPY backend/pom.xml ./ -RUN mvn dependency:go-offline -B +# 验证并下载依赖(如果失败会自动重试) +RUN mvn dependency:resolve -B -s /root/.m2/settings.xml || \ + (echo "依赖下载失败,重试中..." && sleep 2 && mvn dependency:resolve -B -s /root/.m2/settings.xml) COPY backend/ ./ # 从阶段1 复制前端构建产物到 Spring Boot 静态目录 COPY --from=frontend-builder /app/frontend/dist ./src/main/resources/static -RUN mvn package -DskipTests -B +# 构建项目(跳过测试) +RUN mvn clean package -DskipTests -B -s /root/.m2/settings.xml # 阶段3:运行镜像 FROM eclipse-temurin:8-jre-alpine diff --git a/docker/README.md b/docker/README.md index b85ad5a..e373dfe 100644 --- a/docker/README.md +++ b/docker/README.md @@ -73,3 +73,38 @@ docker compose up -d --build 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 +```