Files
par/Dockerfile
mediabot-pt 180022e42d perf: 参考 mediabot 优化 Dockerfile 入口脚本和镜像元数据
- 两个 Dockerfile 同步 OCI 标准镜像标签(org.opencontainers.image.*)
- ENTRYPOINT 改为动态构造数据源 URL(MYSQL_* → SPRING_DATASOURCE_*),兼容不同环境
- 注入 APP_VERSION / APP_BUILD_TIME 环境变量,便于运行时查看版本
- 支持 JAVA_OPTS 环境变量
- 创建 /app/data /app/logs 运行时目录
2026-06-29 12:57:24 +08:00

60 lines
2.2 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.

# syntax=docker/dockerfile:1
# PAR Server - CI 专用精简镜像
# 参考 mediabot 的优化思路:Drone 流水线已完成编译,此处仅打包产物
# 相比 mediabot 的三阶段构建(web-builder → server-builder → runtime),
# 我们将编译前置到 drone host 缓存中,Docker 构建从 15-25min 降至秒级。
# 完整多阶段构建版本见 par-api/Dockerfile(适用于本地独立构建)
FROM 192.168.31.253/library/eclipse-temurin:21-jre-alpine
ARG VERSION=unknown
ARG BUILD_TIME=unknown
ARG BUILDKIT_INLINE_CACHE=1
# OCI 标准镜像标签(参考 mediabot)
LABEL org.opencontainers.image.source="https://github.com/yescent/par"
LABEL org.opencontainers.image.title="PAR Server"
LABEL org.opencontainers.image.description="PT Adapter Registry Server - 适配器配置注册中心"
LABEL org.opencontainers.image.version="${VERSION}"
LABEL org.opencontainers.image.created="${BUILD_TIME}"
# 运行时环境变量(参考 mediabot:注入版本信息方便运行时查看)
ENV TZ="Asia/Shanghai" \
APP_VERSION="${VERSION}" \
APP_BUILD_TIME="${BUILD_TIME}"
# 创建非 root 用户
RUN addgroup -S par && adduser -S par -G par
WORKDIR /app
# 创建运行时目录
RUN mkdir -p /app/data /app/logs /app/static/configs && \
chown -R par:par /app
# 直接复制 drone 已构建好的 jar(无需在 Docker 内重新编译)
COPY par-api/target/*.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
# 启动入口(参考 mediabot:支持环境变量动态构造数据源 URL,便于不同环境切换)
ENTRYPOINT ["sh", "-c", "\
if [ -z \"$SPRING_DATASOURCE_URL\" ]; then \
export SPRING_DATASOURCE_URL=\"jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DB}?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&characterEncoding=UTF-8\"; \
fi; \
if [ -n \"$MYSQL_USER\" ]; then \
export SPRING_DATASOURCE_USERNAME=\"$MYSQL_USER\"; \
fi; \
if [ -n \"$MYSQL_PASSWORD\" ]; then \
export SPRING_DATASOURCE_PASSWORD=\"$MYSQL_PASSWORD\"; \
fi; \
java $JAVA_OPTS -jar app.jar \
"]