Commit 7fbe44f9 by jianan

Docker构建优化

parent bffc7f52
# 基础镜像
FROM openjdk:8
# 维护人
# JRE 运行时(原 openjdk:8 官方镜像已停更无补丁);tag 固定到具体小版本保证构建可重现
# 升级时替换为服务器可拉取的最新 8uXXX-bXX-jre-jammy
FROM eclipse-temurin:8u422-b05-jre-jammy
LABEL maintainer="zxm<2060197959@qq.com>"
# 创建应用目录
RUN mkdir -p /home/app
# 创建日志目录并授权(默认 root 可写)
RUN mkdir -p /var/log/yd-csf-api && chmod 755 /var/log/yd-csf-api
# 拷贝项目jar
COPY target/yd-csf-api-1.0-SNAPSHOT-exec.jar /home/app/yd-csf-api.jar
# 启动命令
ENTRYPOINT ["java", "-Duser.timezone=Asia/Shanghai", "-Xmx256m", "-Xms128m", "-jar", "/home/app/yd-csf-api.jar"]
ENV TZ=Asia/Shanghai \
JAVA_OPTS="-Xmx256m -Xms128m"
# 固定 UID 1001,与宿主机日志目录属主对齐;提前创建日志目录并授权给非 root 用户
RUN groupadd -r app --gid=1001 \
&& useradd -r -g app --uid=1001 -d /home/app app \
&& mkdir -p /var/log/yd-csf-api \
&& chown app:app /var/log/yd-csf-api
# COPY 会自动创建父目录 /home/app,无需单独 mkdir
COPY --chown=app:app target/yd-csf-api-1.0-SNAPSHOT-exec.jar /home/app/yd-csf-api.jar
USER app
EXPOSE 9202
# sh -c + exec:保证 JVM 成为 1 号进程,docker stop 的 SIGTERM 可直达,支持优雅停机
ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -Duser.timezone=Asia/Shanghai -jar /home/app/yd-csf-api.jar"]
......@@ -13,6 +13,8 @@
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${BASE_LOG_DIR}/%d{yyyy-MM-dd}/app.log</fileNamePattern>
<maxHistory>30</maxHistory>
<!-- 日志已 bind mount 到宿主机,限制总大小防止高频部署写满磁盘 -->
<totalSizeCap>2GB</totalSizeCap>
</rollingPolicy>
<encoder>
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment