52 lines
1.5 KiB
Docker
52 lines
1.5 KiB
Docker
# 第一阶段:构建阶段
|
|
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 <cennac@163.com>"
|
|
|
|
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
|