2025-09-30 14:23:33 +08:00
|
|
|
|
# 构建阶段
|
|
|
|
|
|
FROM maven:3.8-eclipse-temurin-17 AS builder
|
|
|
|
|
|
|
2025-09-30 17:03:41 +08:00
|
|
|
|
# 设置工作目录
|
|
|
|
|
|
WORKDIR /build
|
2025-09-30 16:55:42 +08:00
|
|
|
|
|
2025-09-30 17:09:37 +08:00
|
|
|
|
# 复制pom文件和源代码
|
2025-09-30 17:03:41 +08:00
|
|
|
|
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
|
2025-09-30 14:23:33 +08:00
|
|
|
|
|
2025-09-30 19:36:48 +08:00
|
|
|
|
# 运行阶段 - 使用Debian而不是Alpine以支持JavaCV/FFmpeg
|
|
|
|
|
|
FROM eclipse-temurin:17-jre
|
2025-09-30 17:03:41 +08:00
|
|
|
|
|
2025-10-01 23:12:52 +08:00
|
|
|
|
# 安装必要的工具和JavaCV/FFmpeg完整依赖(包含 libx264)
|
2025-09-30 19:36:48 +08:00
|
|
|
|
RUN apt-get update && apt-get install -y \
|
2025-09-30 19:31:01 +08:00
|
|
|
|
curl \
|
2025-09-30 19:36:48 +08:00
|
|
|
|
libgomp1 \
|
|
|
|
|
|
libva-drm2 \
|
|
|
|
|
|
libva2 \
|
2025-09-30 19:45:11 +08:00
|
|
|
|
libxcb-shm0 \
|
|
|
|
|
|
libxcb-shape0 \
|
|
|
|
|
|
libxcb1 \
|
|
|
|
|
|
libx11-6 \
|
|
|
|
|
|
libx11-xcb1 \
|
2025-09-30 19:51:37 +08:00
|
|
|
|
libasound2-dev \
|
|
|
|
|
|
ffmpeg \
|
2025-10-01 23:12:52 +08:00
|
|
|
|
libx264-dev \
|
|
|
|
|
|
libavcodec-extra \
|
2025-09-30 19:36:48 +08:00
|
|
|
|
&& ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \
|
2025-09-30 19:31:01 +08:00
|
|
|
|
&& echo "Asia/Shanghai" > /etc/timezone \
|
2025-09-30 19:36:48 +08:00
|
|
|
|
&& rm -rf /var/lib/apt/lists/*
|
2025-09-30 14:23:33 +08:00
|
|
|
|
|
2025-09-30 17:03:41 +08:00
|
|
|
|
# 设置工作目录
|
2025-09-30 14:23:33 +08:00
|
|
|
|
WORKDIR /app
|
2025-09-30 17:03:41 +08:00
|
|
|
|
|
|
|
|
|
|
# 创建日志和上传目录
|
2025-09-30 14:23:33 +08:00
|
|
|
|
RUN mkdir -p /app/logs /app/upload
|
|
|
|
|
|
|
2025-09-30 17:03:41 +08:00
|
|
|
|
# 复制jar包和配置文件
|
|
|
|
|
|
COPY --from=builder /build/ruoyi-admin/target/ruoyi-admin.jar /app/app.jar
|
2025-09-30 14:23:33 +08:00
|
|
|
|
|
2025-09-30 17:03:41 +08:00
|
|
|
|
# 设置环境变量
|
2025-09-30 14:23:33 +08:00
|
|
|
|
ENV JAVA_OPTS="-Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom"
|
2025-09-30 17:03:41 +08:00
|
|
|
|
|
|
|
|
|
|
# 暴露端口(仅内部使用)
|
2025-09-30 14:23:33 +08:00
|
|
|
|
EXPOSE 8080
|
|
|
|
|
|
|
2025-09-30 17:03:41 +08:00
|
|
|
|
# 健康检查
|
2025-09-30 14:23:33 +08:00
|
|
|
|
HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=60s \
|
|
|
|
|
|
CMD curl -f http://localhost:8080/actuator/health || exit 1
|
|
|
|
|
|
|
2025-09-30 17:03:41 +08:00
|
|
|
|
# 启动应用
|
|
|
|
|
|
ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar /app/app.jar"]
|