# ============================================================= # freedom-admin 后端镜像 # 构建阶段:Maven 3.6.3 + JDK8 打包(使用阿里云镜像加速依赖下载) # 运行阶段:JRE8 运行 jar # ============================================================= FROM maven:3.6.3-jdk-8 AS builder WORKDIR /build # 配置腾讯云镜像源(腾讯云服务器内网直连,速度远快于公网阿里云) RUN mkdir -p /root/.m2 && \ echo '' > /root/.m2/settings.xml && \ echo '> /root/.m2/settings.xml && \ echo ' xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"' >> /root/.m2/settings.xml && \ echo ' xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">' >> /root/.m2/settings.xml && \ echo ' ' >> /root/.m2/settings.xml && \ echo ' ' >> /root/.m2/settings.xml && \ echo ' tencent' >> /root/.m2/settings.xml && \ echo ' central' >> /root/.m2/settings.xml && \ echo ' Tencent Cloud Maven' >> /root/.m2/settings.xml && \ echo ' https://mirrors.cloud.tencent.com/nexus/repository/maven-public/' >> /root/.m2/settings.xml && \ echo ' ' >> /root/.m2/settings.xml && \ echo ' ' >> /root/.m2/settings.xml && \ echo '' >> /root/.m2/settings.xml # 复制 pom 与源码(利用 Docker 分层缓存) COPY pom.xml . COPY src ./src # 打包(跳过测试),使用 BuildKit cache mount 持久化 Maven 仓库,跨构建复用 RUN --mount=type=cache,target=/root/.m2/repository mvn -B clean package -DskipTests # ---------- 运行阶段 ---------- FROM openjdk:8-jre-slim WORKDIR /app # 设置时区 RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \ echo 'Asia/Shanghai' > /etc/timezone # 复制构建产物 COPY --from=builder /build/target/*.jar /app/app.jar # 对外暴露端口(与 application.yml server.port 一致) EXPOSE 8800 # 启动。数据库等敏感配置通过环境变量注入(见 docker-compose / .env) ENTRYPOINT ["java", "-jar", "/app/app.jar"]