# CAS 5.3.16 运行镜像(单阶段,war 预构建) # CI 已先 mvn package 并在容器内把产物 cp 成固定名 target/app.jar(= cas.war,可执行 WAR) # 构建上下文 = 仓库根:docker build -f docker/Dockerfile . # 健康检查(projman 应用配置 healthPath=/cas/status + HTTPS 自签名开):curl -fk https://localhost:8443/cas/status # 时区 Asia/Shanghai;JAVA_OPTS 由 projman 部署 env 注入(默认 -Xms512m -Xmx1024m) FROM eclipse-temurin:8-jre # CAS 5.3 默认要求 HTTPS(安全 Cookie),生成自签名密钥库(密码固定 changeit,过渡期用) RUN mkdir -p /etc/cas/config \ && keytool -genkeypair -alias cas -keyalg RSA -keysize 2048 -validity 3650 \ -storetype JKS -keystore /etc/cas/cas.keystore \ -storepass changeit -keypass changeit -dname "CN=cas.example.org" \ && apt-get update && apt-get install -y --no-install-recommends curl tzdata \ && ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone \ && rm -rf /var/lib/apt/lists/* WORKDIR /app COPY target/app.jar /app/cas.war COPY docker/cas.properties /etc/cas/config/cas.properties COPY etc/cas/config/log4j2.xml /etc/cas/config/log4j2.xml # 镜像内 cas.properties 仅保留环境无关配置(HTTPS/端口/日志/管理页白名单); # 业务配置(cas.server.name / cas.authn.jdbc / Redis / custom.login.* 等)来自 projman # 配置管理挂载的 /app/config/application.yml(Boot 1.5 自动加载 file:./config/ 且优先于 classpath),镜像保持环境无关。 EXPOSE 8443 ENTRYPOINT ["sh", "-c", "java ${JAVA_OPTS:--Xms512m -Xmx1024m} -Dfile.encoding=UTF-8 -jar /app/cas.war"]