Files
par/par-api/Dockerfile

68 lines
1.7 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PAR Server - 前后端一体化 Docker 镜像
# 参考 mediabot 的多阶段构建方式
# 第一阶段:构建前端
FROM 192.168.31.253/library/node:22-alpine AS web-builder
WORKDIR /app
COPY web/package.json web/package-lock.json ./
RUN npm ci --ignore-scripts
COPY web/ .
RUN npm run build
# 第二阶段:构建后端
# mediabot 使用 maven-java21 镜像(已含 JDK + Maven)
FROM 192.168.31.253/library/maven-java21:3.9.9-alpine AS server-builder
WORKDIR /build
# 先复制 pom 文件,利用 Docker 缓存
COPY pom.xml .
COPY par-common/pom.xml par-common/
COPY par-core/pom.xml par-core/
COPY par-api/pom.xml par-api/
# 下载依赖(缓存层)
RUN mvn dependency:go-offline -B
# 复制源码并构建
COPY par-common/src par-common/src
COPY par-core/src par-core/src
COPY par-api/src par-api/src
# 将前端构建产物复制到后端静态资源目录
COPY --from=web-builder /app/dist par-api/src/main/resources/static
RUN mvn clean package -DskipTests -B && \
mkdir -p target && \
cp par-api/target/*.jar target/app.jar
# 第三阶段:运行
FROM 192.168.31.253/library/eclipse-temurin:21-jre-alpine
LABEL maintainer="PAR Team"
LABEL description="PT Adapter Registry Server"
# 创建非 root 用户
RUN addgroup -S par && adduser -S par -G par
WORKDIR /app
# 创建静态文件目录
RUN mkdir -p /app/static/configs && chown -R par:par /app
# 复制构建产物
COPY --from=server-builder /build/target/app.jar app.jar
USER par
# 暴露端口
EXPOSE 8080
# 健康检查
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
CMD wget -qO- http://localhost:8080/health || exit 1
# 启动参数
ENTRYPOINT ["java", "-jar", "app.jar"]