51 lines
1.6 KiB
Docker
51 lines
1.6 KiB
Docker
# —— 第一阶段:Maven 构建 ——
|
||
FROM maven:3.8.6-openjdk-8-slim AS builder
|
||
WORKDIR /workspace
|
||
|
||
# 复制项目级 settings.xml
|
||
COPY .mvn/settings.xml /root/.m2/settings.xml
|
||
|
||
# 预先把外部模块的 JAR 复制进来,并安装到本地仓库
|
||
COPY docs/libs/group-buying-sys-api-1.0-SNAPSHOT.jar /tmp/group-buying-sys-api.jar
|
||
RUN mvn install:install-file \
|
||
-Dfile=/tmp/group-buying-sys-api.jar \
|
||
-DgroupId=edu.whut \
|
||
-DartifactId=group-buying-sys-api \
|
||
-Dversion=1.0-SNAPSHOT \
|
||
-Dpackaging=jar
|
||
|
||
# 1. 拷贝父 POM 及各模块的 pom.xml,加速依赖下载
|
||
COPY pom.xml ./pom.xml
|
||
COPY pay-mall-api/pom.xml ./pay-mall-api/pom.xml
|
||
COPY pay-mall-domain/pom.xml ./pay-mall-domain/pom.xml
|
||
COPY pay-mall-infrastructure/pom.xml ./pay-mall-infrastructure/pom.xml
|
||
COPY pay-mall-trigger/pom.xml ./pay-mall-trigger/pom.xml
|
||
COPY pay-mall-types/pom.xml ./pay-mall-types/pom.xml
|
||
COPY pay-mall-app/pom.xml ./pay-mall-app/pom.xml
|
||
|
||
# 离线下载所有依赖
|
||
RUN mvn dependency:go-offline -B
|
||
|
||
# 2. 拷贝所有源码
|
||
COPY . .
|
||
|
||
# 3. 打包 main 应用模块,跳过测试
|
||
RUN mvn -f pom.xml clean package \
|
||
-pl pay-mall-app -am \
|
||
-DskipTests -B
|
||
|
||
# —— 第二阶段:运行时镜像 ——
|
||
FROM openjdk:8-jdk-slim
|
||
LABEL maintainer="smile"
|
||
|
||
# 设置时区
|
||
ENV TZ=Asia/Shanghai
|
||
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
|
||
|
||
# 拷贝打包产物
|
||
COPY --from=builder /workspace/pay-mall-app/target/pay-mall-app.jar app.jar
|
||
|
||
# 暴露端口
|
||
EXPOSE 8092
|
||
|
||
ENTRYPOINT ["java", "-jar", "app.jar"] |