| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- # 优化后的 Dockerfile - shop-recycle-gateway
- # ============================================================
- # 使用轻量级基础镜像:eclipse-temurin:17-jre-alpine
- # 相比 openjdk:17.0.2-jdk-slim 减少约 400MB
- # 只包含 JRE 不包含 JDK(生产环境只需要运行时)
- # ============================================================
- FROM eclipse-temurin:17-jre-alpine
- # 设置工作目录
- WORKDIR /app
- # 将 JAR 文件复制到容器
- COPY shop-recycle-gateway-1.0.0.jar /app/
- # 暴露应用端口
- EXPOSE 1211
- # ============================================================
- # 优化后的 JAVA_OPTS:
- # 必须保留的参数:
- # -Djava.awt.headless=true : 禁用 GUI,适合服务器环境
- # -Djava.net.preferIPv4Stack=true: 解决 IPv4/IPv6 兼容性问题
- # -Xss256k : 线程栈大小,防止线程创建失败
- # -XX:+DisableExplicitGC : 禁用显式 GC,避免应用代码影响
- #
- # 在 K8S 环境中删除的参数及原因:
- # -server : K8S 中已是服务模式,无需指定
- # -Xmx512m -Xms512m -Xmn256m : 由 K8S resources.limits/requests 管理,不用 JVM 参数指定
- # -XX:PermSize/MaxPermSize : Java 8+ 已过时(PermGen → Metaspace)
- # -XX:+UseConcMarkSweepGC : Java 17 已默认使用 G1GC,该参数不生效
- # -XX:CMSxxx : CMS GC 相关参数,Java 17 中不适用
- # -XX:LargePageSizeInBytes : K8S 环境不推荐,由 K8S 调度器管理
- # -XX:+UseFastAccessorMethods : 现代 JVM 已默认优化,显式指定无实际效果
- # ============================================================
- ENV JAVA_OPTS="-Djava.awt.headless=true -Djava.net.preferIPv4Stack=true -Xss256k -XX:+DisableExplicitGC"
- # 健康检查(可选,建议在 Kubernetes 中配置 livenessProbe)
- HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
- CMD java -cp /app/shop-recycle-gateway-1.0.0.jar -version &> /dev/null || exit 1
- # 启动应用
- # 自动读取 /app/conf 目录下的所有 YAML/Properties 配置文件
- CMD ["sh", "-c", "java ${JAVA_OPTS} -jar /app/shop-recycle-gateway-1.0.0.jar --spring.config.location=file:/app/conf/"]
|