21 lines
1.2 KiB
Docker
21 lines
1.2 KiB
Docker
# 运行阶段:直接使用你本地已打好的 jar(放在本目录,与 Dockerfile / docker-compose.yml 同级)
|
||
# 用法:先本地执行 mvn package(JDK 21),把 target/devToolBox-1.0-SNAPSHOT.jar 复制到本目录
|
||
FROM eclipse-temurin:21-jre
|
||
WORKDIR /app
|
||
ENV TZ=Asia/Shanghai
|
||
|
||
# JVM 默认参数(4H4G + 已跑 Redis/Gitea/Ollama 的低配场景):
|
||
# -Xms256m / -Xmx512m 堆固定,避免 JVM 猜着吃;不够再上调
|
||
# ExitOnOutOfMemoryError OOM 时直接退出,交给 Docker 重启,比卡死强
|
||
# HeapDumpOnOutOfMemoryError 出事时留一份堆快照便于排查
|
||
# 想运行时调整:compose 里覆盖环境变量 JAVA_OPTS 即可
|
||
ENV JAVA_OPTS="-Xms256m -Xmx512m -XX:+ExitOnOutOfMemoryError -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heapdump.hprof"
|
||
|
||
# 本目录下放且仅放一个 jar(.dockerignore 已排除 target/,避免误打包)
|
||
COPY *.jar app.jar
|
||
EXPOSE 8077
|
||
|
||
# sh -c "exec ..." 方式:先解析 $JAVA_OPTS,再用 exec 把 java 替换 sh 作为 PID 1,
|
||
# 这样 docker stop 发的 SIGTERM 能被 JVM 正常接收、Spring Boot 走完 shutdown hook
|
||
ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -jar /app/app.jar"]
|