# 第一阶段:构建阶段 FROM maven:3.9-eclipse-temurin-17 AS builder WORKDIR /build # 复制 pom.xml 并下载依赖(利用 Docker 缓存) COPY pom.xml . COPY easyflow-api/pom.xml easyflow-api/ COPY easyflow-commons/pom.xml easyflow-commons/ COPY easyflow-modules/pom.xml easyflow-modules/ COPY easyflow-starter/pom.xml easyflow-starter/ COPY easyflow-starter/easyflow-starter-all/pom.xml easyflow-starter/easyflow-starter-all/ # 注意:这里需要复制所有模块的 pom.xml 才能正确解析依赖 # 如果模块很多,可能需要更精细的复制,但这里先简单处理 COPY . . # 执行构建 RUN mvn clean package -DskipTests # 第二阶段:运行阶段 FROM eclipse-temurin:17-jre LABEL maintainer="Cennac " ARG VERSION=2.0.4 ARG SERVICE_NAME=easyflow-starter-all ARG SERVICE_PORT=8080 ENV VERSION ${VERSION} ENV SERVICE_NAME ${SERVICE_NAME} ENV SERVICE_PORT ${SERVICE_PORT} ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 ENV JAVA_OPTS="" ENV TZ=Asia/Shanghai WORKDIR /app # 安装必要的字体和工具 RUN apt-get update && \ apt-get install -y --no-install-recommends fonts-dejavu-core fontconfig && \ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \ rm -rf /var/lib/apt/lists/* # 从构建阶段复制 jar 包 COPY --from=builder /build/easyflow-starter/easyflow-starter-all/target/${SERVICE_NAME}-*.jar app.jar VOLUME /tmp EXPOSE ${SERVICE_PORT} ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar ./app.jar