dockerfile - SecurityException 在 Docker 容器中使用 Centos/OpenJDK11/Tomcat 加载 JAAS 配置文件
问题描述
我正在尝试将现有的 Web 应用程序从 Windows 移动到在 Docker 容器中运行。我以 Centos 7 和 OpenJDK 11 作为起点。将 Tomcat 9 放在上面并开始正常。我开始为我的 Web 应用程序添加组件以及我们当前 Windows 部署的所有组件(war 文件、jaas.config、setenv.sh 等)。docker 容器启动正常,但是当我尝试登录时出现以下错误。
04-Jan-2021 13:27:30.381 SEVERE [http-nio-8080-exec-9] org.apache.catalina.realm.JAASRealm.authenticate Unexpected error
java.lang.SecurityException: java.io.IOException: /opt/tomcat/latest/conf/jaas.config
(No such file or directory)
at java.base/sun.security.provider.ConfigFile$Spi.<init>(ConfigFile.java:137)
我停止容器并以交互模式启动我确认文件位于该位置。
root@eac3366e9b83:/# ls -ltr /opt/tomcat/latest/conf/
total 236
-rwxrwxrwx 1 root root 107 Jul 13 2019 jaas.config
什么可能导致问题?
解决方案
问题是 jaas.config 文件和 setenv.sh 从 windows 复制到 docker 映像并包含 windows 行终止。因此,当tomcat 尝试加载jaas 配置文件时,名称末尾有多余的字符,并且在File.exists 中失败。修复文件内容后,身份验证模块加载正常。
推荐阅读
- here-api - 地理围栏扩展 API - 上传新图层
- json - 此集合实例上不存在属性 [libelle_metier]
- c# - 无法从 WerFault.exe 获取冻结的进程名称
- docker-compose - docker-compose-simple.yaml 文件在编写它以在 docker devmode 中运行 Chaincode 时出错
- javascript - 如果数组中不存在索引,则在索引位置创建元素
- wxpython - 为什么不建议在 wxPython 中使用 ID?
- php - 从数据库中的表中验证用户
- android - 带有函数finish()的日历活动
- ios - 无法将文本文件中的数据显示到 UITextView
- c++ - 为什么 std::string 和 std::vector 没有按照我的预期传递给我的构造函数?