Apereo CAS 6.6.12配置路径切换:开发与生产环境适配问题
配置Apereo CAS 6.6.12多环境加载不同配置目录
问题背景
配置Apereo CAS项目(仓库地址:https://github.com/ICIQ-DMP/eChempad-CAS-public-mirror)时,执行./gradlew clean run启动CAS WAR overlay,日志提示配置目录找不到:
2023-10-11 07:53:51,912 INFO [org.apereo.cas.configuration.DefaultCasConfigurationPropertiesSourceLocator] - <Configuration directory [null] is not a directory or cannot be found at the specific path>
CAS默认从/etc/cas/config加载配置,开发时需手动复制配置文件到该目录才能运行。需求是:
- 开发环境(dev profile):从项目根目录下的
${PROJECT_DIR}/etc/cas/config加载配置 - Docker生产环境(prod profile):保持使用
/etc/cas/config
解决方案
方法一:通过Gradle构建脚本绑定dev环境配置目录
修改项目根目录的build.gradle,在run任务中针对dev环境添加系统属性:
tasks.withType(JavaExec) { if (project.hasProperty('dev')) { systemProperty 'cas.standalone.configurationDirectory', "${project.projectDir}/etc/cas/config" } }
启动时激活dev profile并触发配置:
./gradlew clean run -Pdev --args="--spring.profiles.active=dev"
方法二:启动命令直接指定系统属性
无需修改构建脚本,启动时通过-D参数直接指定配置目录,同时激活dev profile:
./gradlew clean run -Dcas.standalone.configurationDirectory=$(pwd)/etc/cas/config --args="--spring.profiles.active=dev"
方法三:Spring Profile配置文件区分(可选)
在项目src/main/resources/application.yml中添加多环境配置:
spring: profiles: active: ${SPRING_PROFILES_ACTIVE:prod} --- spring: profiles: dev cas: standalone: configurationDirectory: ${PROJECT_DIR:./}/etc/cas/config --- spring: profiles: prod cas: standalone: configurationDirectory: /etc/cas/config
启动时传递项目根目录路径并激活dev profile:
./gradlew clean run -DPROJECT_DIR=$(pwd) --args="--spring.profiles.active=dev"
生产环境(Docker)配置
Docker环境无需额外修改,保持CAS默认配置逻辑即可。只需将宿主机的配置目录挂载到容器的/etc/cas/config,启动时可显式激活prod profile:
docker run -v /宿主机配置路径/etc/cas/config:/etc/cas/config your-cas-image --spring.profiles.active=prod
内容的提问来源于stack exchange,提问作者Aleix Mariné
相关产品推荐
相关产品推荐

