Enhance Dockerfile and README: Configure Maven to use Alibaba Cloud mirror for faster dependency downloads and update troubleshooting instructions for Maven dependency issues.
This commit is contained in:
@@ -15,15 +15,36 @@ RUN npm run build
|
|||||||
FROM maven:3.8-eclipse-temurin-8-alpine AS backend-builder
|
FROM maven:3.8-eclipse-temurin-8-alpine AS backend-builder
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
|
# 配置 Maven 使用阿里云镜像(加速下载,解决网络问题)
|
||||||
|
RUN mkdir -p /root/.m2 && \
|
||||||
|
cat > /root/.m2/settings.xml << 'EOF'
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
|
||||||
|
<mirrors>
|
||||||
|
<mirror>
|
||||||
|
<id>aliyunmaven</id>
|
||||||
|
<mirrorOf>central</mirrorOf>
|
||||||
|
<name>阿里云公共仓库</name>
|
||||||
|
<url>https://maven.aliyun.com/repository/public</url>
|
||||||
|
</mirror>
|
||||||
|
</mirrors>
|
||||||
|
</settings>
|
||||||
|
EOF
|
||||||
|
|
||||||
# 复制后端源码
|
# 复制后端源码
|
||||||
COPY backend/pom.xml ./
|
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/ ./
|
COPY backend/ ./
|
||||||
# 从阶段1 复制前端构建产物到 Spring Boot 静态目录
|
# 从阶段1 复制前端构建产物到 Spring Boot 静态目录
|
||||||
COPY --from=frontend-builder /app/frontend/dist ./src/main/resources/static
|
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:运行镜像
|
# 阶段3:运行镜像
|
||||||
FROM eclipse-temurin:8-jre-alpine
|
FROM eclipse-temurin:8-jre-alpine
|
||||||
|
|||||||
@@ -73,3 +73,38 @@ docker compose up -d --build
|
|||||||
4. 内置健康检查(每 30 秒检查 `/api/health` 端点)
|
4. 内置健康检查(每 30 秒检查 `/api/health` 端点)
|
||||||
- 生产环境前端 API/WebSocket 使用相对路径,与后端同源,无需再配 CORS。
|
- 生产环境前端 API/WebSocket 使用相对路径,与后端同源,无需再配 CORS。
|
||||||
- 已配置 `.dockerignore` 优化构建上下文,加快构建速度。
|
- 已配置 `.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
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user