# 使用 OpenJDK 21 基础镜像 FROM eclipse-temurin:21-jdk-jammy # 设置工作目录 WORKDIR /app # 设置时区 ENV TZ=Asia/Riyadh RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # 复制构建好的 JAR 文件到容器中 COPY target/centreproject-admin.jar app.jar # 暴露端口 (根据你的实际配置调整) EXPOSE 8080 # 设置 JVM 参数,启用虚拟线程 # 关键参数: # --enable-preview: 启用预览功能(JDK21中虚拟线程仍为预览功能) # -Dspring.threads.virtual.enabled=true: 启用Spring的虚拟线程支持 # -Djdk.tracePinnedThreads=full: 跟踪被pin住的线程(调试用) # -Djdk.virtualThreadScheduler.parallelism=1: 虚拟线程调度器并行度(根据CPU核心数调整) ENV JAVA_OPTS="--enable-preview -Xms512m -Xmx1024m -Djava.security.egd=file:/dev/./urandom -Dspring.threads.virtual.enabled=true -Djdk.tracePinnedThreads=full -Djdk.virtualThreadScheduler.parallelism=1" # 启动应用 ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS} -jar app.jar"]