WebLogic 12.2.1.2 Docker容器域创建失败,请求协助排查
解决WebLogic 12.2.1.2 Docker镜像域创建失败的问题
看了你遇到的WebLogic Docker域创建失败的问题,结合错误日志和执行命令,这个WLST报错大概率和域配置参数、数据库连接或者权限有关。下面给你一步步的排查和解决思路:
1. 先找到缺失的域日志
你说找不到域日志,其实Docker容器里的域创建相关日志藏在这几个地方:
- 临时WLST日志:
/tmp目录下的WLST相关日志文件(比如你日志里提到的临时脚本所在目录,大概率有对应的.log文件) - 预创建域的初始化日志:如果域目录已经部分生成,
/u01/oracle/user_projects/domains/InfraDomain/init-info目录里会有详细日志 - 容器脚本日志:
/u01/oracle/container-scripts目录下可能留存脚本执行日志
你可以进入容器查看这些位置,执行命令:
docker exec -it InfraAdminContainer /bin/bash # 查看临时目录日志 ls -l /tmp/*.log # 查看域初始化日志(如果目录存在) ls -l /u01/oracle/user_projects/domains/InfraDomain/init-info/ # 查看容器脚本目录日志 ls -l /u01/oracle/container-scripts/
2. 排查数据库连接和RCU配置细节
从日志看RCU阶段已经走完,但域创建还是失败,要重点检查这些点:
- RCU Schema的有效性:确认
RCUPREFIX=INFRA6对应的数据库schema已经正确创建,并且使用的sys用户拥有SYSDBA角色(RCU执行需要这个权限) - Docker网络的数据库可达性:你的JDBC URL用了
InfraDB主机名,要确保InfraNET网络里这个数据库容器能被正常解析,端口1521开放,且PDBInfraPDB1.us.oracle.com处于OPEN状态 - Schema密码一致性:日志里自动生成了
DB_SCHEMA_PASSWORD=z8zAJQY1,可以试试手动在infraDomain.env.list里指定这个密码,避免自动生成可能的不匹配问题
3. 检查密码复杂度
日志里出现Password does not Match the criteria, re-generating...,说明你设置的ADMIN_PASSWORD不符合WebLogic的密码规则。WebLogic要求密码至少8位,包含大写字母、小写字母、数字和特殊字符,你可以把infraDomain.env.list里的ADMIN_PASSWORD改成符合要求的,比如MyWLSAdmin1!
4. 调整宿主机卷挂载权限
你挂载了$HOST_VOLUME:/u01/oracle/user_projects,要确保宿主机的这个目录权限是oracle:oracle(UID/GID通常是1000:1000),否则容器内的oracle用户无法写入数据,导致域创建失败。在宿主机执行:
chown -R 1000:1000 $HOST_VOLUME
5. 手动执行WLST脚本获取详细错误
如果上面的步骤都没解决问题,你可以手动在容器里执行WLST脚本,这样能看到更详细的错误细节,定位到底是哪个set()命令失败:
docker exec -it InfraAdminContainer /bin/bash cd /u01/oracle/container-scripts /u01/oracle/oracle_common/common/bin/wlst.sh createInfraDomain.py -oh /u01/oracle -jh /usr/java/default -parent /u01/oracle/user_projects/domains -name InfraDomain -user weblogic -password MyWLSAdminPassword -rcuDb InfraDB:1521/InfraPDB1.us.oracle.com -rcuPrefix INFRA6 -rcuSchemaPwd z8zAJQY1
执行时会输出完整的错误堆栈,能帮你精准定位问题(比如是设置域模式、管理端口还是数据库连接参数出错)
内容的提问来源于stack exchange,提问作者Amal Vijayan




