Files
gxwebsoft 5e86ebe6b7 feat(auth): 实现统一认证模块及登录策略
- 新增 ApiResult 统一响应封装类,规范前端接口返回结构
- 添加 AuthController,支持多种登录方式及用户信息接口
- 实现 AuthService,包含登录、登出、密码修改、绑定手机号、重置密码等功能
- 集成图形验证码校验和登录失败锁定机制,增强安全性
- 支持邮箱登录和手机号验证码登录,完善多样化认证策略
- 实现 JWT 令牌签发与吊销,确保会话安全管理
- 配置不同环境 application.yml 及配置,支持多租户和灵活缓存配置
- 增加 .gitignore 规则,屏蔽构建产物、IDE 文件和敏感配置
- 引入 AuthProperties 以配置登录与验证码策略参数
2026-09-23 11:59:45 +08:00

33 lines
1.1 KiB
Docker

# ---------- 构建阶段:JDK 25 + Maven ----------
FROM maven:3.9-eclipse-temurin-25 AS build
WORKDIR /build
# 先只复制 pom,利用镜像层缓存加速依赖下载
COPY pom.xml .
RUN mvn -B -ntp dependency:go-offline
COPY src ./src
RUN mvn -B -ntp clean package -DskipTests
# ---------- 运行阶段:JRE 25 ----------
FROM eclipse-temurin:25-jre-alpine
WORKDIR /app
RUN mkdir -p /app/logs /app/config && chmod 755 /app/logs /app/config
COPY --from=build /build/target/iam-api-*.jar app.jar
ENV TZ=Asia/Shanghai \
SPRING_PROFILES_ACTIVE=prod \
# netty 4.1 仍使用 sun.misc.Unsafe 内存访问,JDK 25 下显式放行以消除告警
# -Duser.timezone 独立于操作系统时区库,避免 alpine 镜像里 TZ 不生效导致时间写入 UTC
JAVA_OPTS="-XX:MaxRAMPercentage=75 -XX:+UseG1GC --sun-misc-unsafe-memory-access=allow -Duser.timezone=Asia/Shanghai"
EXPOSE 8900
HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:8900/actuator/health || exit 1
ENTRYPOINT ["sh", "-c", "exec java $JAVA_OPTS -jar app.jar"]