# 构建阶段 FROM maven:3.8-eclipse-temurin-17 AS builder # 设置工作目录 WORKDIR /build # 复制pom文件和源代码 COPY pom.xml . COPY ruoyi-admin/pom.xml ./ruoyi-admin/ COPY ruoyi-common/pom.xml ./ruoyi-common/ COPY ruoyi-framework/pom.xml ./ruoyi-framework/ COPY ruoyi-generator/pom.xml ./ruoyi-generator/ COPY ruoyi-quartz/pom.xml ./ruoyi-quartz/ COPY ruoyi-system/pom.xml ./ruoyi-system/ COPY ruoyi-video/pom.xml ./ruoyi-video/ COPY ruoyi-admin/src ./ruoyi-admin/src COPY ruoyi-common/src ./ruoyi-common/src COPY ruoyi-framework/src ./ruoyi-framework/src COPY ruoyi-generator/src ./ruoyi-generator/src COPY ruoyi-quartz/src ./ruoyi-quartz/src COPY ruoyi-system/src ./ruoyi-system/src COPY ruoyi-video/src ./ruoyi-video/src # 构建项目(跳过测试和enforcer检查以避免依赖冲突) RUN mvn clean package -DskipTests -Denforcer.skip=true -pl ruoyi-admin -am # 运行阶段 - 使用Debian而不是Alpine以支持JavaCV/FFmpeg FROM eclipse-temurin:17-jre # 安装必要的工具和JavaCV/FFmpeg完整依赖(包含 libx264) RUN apt-get update && apt-get install -y \ curl \ libgomp1 \ libva-drm2 \ libva2 \ libxcb-shm0 \ libxcb-shape0 \ libxcb1 \ libx11-6 \ libx11-xcb1 \ libasound2-dev \ ffmpeg \ libx264-dev \ libavcodec-extra \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && rm -rf /var/lib/apt/lists/* # 设置工作目录 WORKDIR /app # 创建日志和上传目录 RUN mkdir -p /app/logs /app/upload # 复制jar包和配置文件 COPY --from=builder /build/ruoyi-admin/target/ruoyi-admin.jar /app/app.jar # 设置环境变量 ENV JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom" # 暴露端口(仅内部使用) EXPOSE 8080 # 健康检查 HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=60s \ CMD curl -f http://localhost:8080/actuator/health || exit 1 # 启动应用 ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app/app.jar"]