diff --git a/Dockerfile b/Dockerfile index 3caca33..58f4d77 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # ===== 基础镜像阶段 ===== # 使用更小的Alpine OpenJRE镜像 -FROM openjdk:8-jre-alpine AS base +FROM docker.aipper.de/eclipse-temurin:8-jre-alpine as base # 设置维护者信息 LABEL maintainer="digital-archive-team" @@ -17,29 +17,30 @@ RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories # ===== Maven 构建阶段 ===== # 使用更小的Alpine Maven镜像进行构建 -FROM maven:3.8.4-openjdk-8-alpine AS builder +FROM docker.aipper.de/maven:3.9.9-eclipse-temurin-8-focal AS builder # 设置工作目录 WORKDIR /build +# 创建Maven仓库并设置权限 +RUN mkdir -p /root/.m2/repository && \ + chown -R root:root /root/.m2 + # 复制settings.xml和pom.xml文件 COPY settings.xml /root/.m2/ COPY pom.xml . -# 复制本地JAR文件到Maven仓库 -RUN mkdir -p /root/.m2/repository - # 复制本地lib目录中的JAR文件 COPY src/main/lib/ /tmp/local-jars/ -# 手动安装本地JAR到Maven仓库(只安装实际使用的) +# 手动安装本地JAR到Maven仓库(修复版本一致性和错误处理) RUN mvn install:install-file \ -Dfile=/tmp/local-jars/aspose-cells-8.5.2.jar \ -DgroupId=com.aspose \ -DartifactId=aspose-cells \ -Dversion=8.5.2 \ -Dpackaging=jar \ - -B -s /root/.m2/settings.xml || echo "Aspose cells installation failed" + -B -s /root/.m2/settings.xml RUN mvn install:install-file \ -Dfile=/tmp/local-jars/aspose-words-15.8.0-jdk16.jar \ @@ -47,7 +48,7 @@ RUN mvn install:install-file \ -DartifactId=aspose-words \ -Dversion=15.8.0 \ -Dpackaging=jar \ - -B -s /root/.m2/settings.xml || echo "Aspose words installation failed" + -B -s /root/.m2/settings.xml RUN mvn install:install-file \ -Dfile=/tmp/local-jars/jai_codec-1.1.3.jar \ @@ -55,15 +56,15 @@ RUN mvn install:install-file \ -DartifactId=jai_codec \ -Dversion=1.1.3 \ -Dpackaging=jar \ - -B -s /root/.m2/settings.xml || echo "JAI codec installation failed" + -B -s /root/.m2/settings.xml RUN mvn install:install-file \ -Dfile=/tmp/local-jars/jai_core.jar \ -DgroupId=javax.media \ -DartifactId=jai_core \ - -Dversion=1.1.3 \ + -Dversion=1.0.0-SNAPSHOT \ -Dpackaging=jar \ - -B -s /root/.m2/settings.xml || echo "JAI core installation failed" + -B -s /root/.m2/settings.xml RUN mvn install:install-file \ -Dfile=/tmp/local-jars/jce-0.0.1.jar \ @@ -71,25 +72,35 @@ RUN mvn install:install-file \ -DartifactId=jce \ -Dversion=0.0.1 \ -Dpackaging=jar \ - -B -s /root/.m2/settings.xml || echo "JCE installation failed" + -B -s /root/.m2/settings.xml RUN mvn install:install-file \ -Dfile=/tmp/local-jars/agent-1.0.0.jar \ -DgroupId=com.yh \ -DartifactId=scofd \ - -Dversion=1.0.0 \ + -Dversion=1.0.1 \ -Dpackaging=jar \ - -B -s /root/.m2/settings.xml || echo "Agent installation failed" + -B -s /root/.m2/settings.xml -# 设置Maven仓库权限 -RUN chown -R root:root /root/.m2 +# 确保Maven仓库权限正确 +RUN chown -R root:root /root/.m2 && \ + chmod -R 755 /root/.m2 # 复制源代码 COPY src ./src -# 构建应用(优化构建参数) -RUN mvn clean package -DskipTests -B -s /root/.m2/settings.xml -e \ - -o \ +# 验证依赖和构建环境 +RUN echo "=== 验证Maven环境 ===" && \ + mvn -version && \ + echo "=== 验证本地JAR文件 ===" && \ + ls -la /tmp/local-jars/ && \ + echo "=== 下载依赖(不编译) ===" && \ + mvn dependency:go-offline -B -s /root/.m2/settings.xml -e || \ + mvn dependency:resolve -B -s /root/.m2/settings.xml -e + +# 构建应用(移除离线模式,允许下载依赖) +RUN echo "=== 开始构建应用 ===" && \ + mvn clean package -DskipTests -B -s /root/.m2/settings.xml -e \ -Dmaven.test.skip=true \ -Dmaven.compiler.optimize=true @@ -146,4 +157,4 @@ HEALTHCHECK --interval=30s --timeout=10s --start-period=60s --retries=3 \ EXPOSE 9081 # 启动应用 -CMD ["sh", "-c", "java $JAVA_OPTS -jar app.jar"] \ No newline at end of file +CMD ["sh", "-c", "java $JAVA_OPTS -jar app.jar"]