因工作需要,需将weblogic制作为docker镜像,现将过程记录以便查阅。
weblogic镜像制作,官方从12.1.3后,提供官方脚本用于制作镜像包括weblogic静默安装和weblogic静默离线创建域。https://github.com/oracle/docker-images中提供各种官版镜像制作脚本。
没有官方脚本的版本,可以参考官方脚本和百度“weblogic静默安装”制作镜像。
此次需求完成重点不是weblogic镜像制作,而是镜像需要满足自动项目发布的需求。
因为web项目从weblogic jndi获取数据源,weblogic自动发布需满足自动创建数据源,自动发布指定目录下的web项目。问题之处,认为weblogic可以通过更改config.xml文件实现部署和数据源建立,几次折腾回头看修改xml配置文件的方式自己不能实现(估计就不能实现,很多配置项都是weblogic启动后才会生成)。所以,直接给出结果weblogic的自动发布通过weblogic.WLST提供的脚本方法和python脚本实现,weblogic.WLST支持python。
WLST官方资料:
http://www.beansoft.biz/weblogic/docs100/config_scripting/index.html
welbogic创建数据源可以在脱机(weblogic未启动)情况下创建,而部署只能在weblogic启动的情况下才能部署。所以脚本分为三部分:1、脱机建立数据源2、启动weblogic3、部署指定应用。
1、首先是建立docker容器启动时执行的sh脚本
#!/bin/bash
# WARNING: This file is created by the Configuration Wizard.
# Any changes to this script may be lost when adding extensions to this configuration.
echo "auto deploy start..."
source /u01/oracle/wlserver/server/bin/setWLSEnv.sh >/u01/initlog
java weblogic.WLST /u01/oracle/user_projects/domains/base_domain/bin/createWeblogicDataSource.py >>/u01/initlog &
echo "auto deploy start create data source end..."
wait
java weblogic.WLST /u01/oracle/user_projects/domains/base_domain/bin/deployWeblogicWebapp.py >>/u01/initlog &
DOMAIN_HOME="/u01/oracle/user_projects/domains/base_domain"
${DOMAIN_HOME}/bin/startWebLogic.sh $*
脚本解释:
1、加载WLST需要的环境变量(weblogic安装目录下)
2、启动数据源建立py脚本(sh后台执行)
##==============================================================
## create by 2016.10.13
## weblogic自动部署脚本
## 实现从环境变量中获取数据库连接信息和项目部署路径
## 新建数据源和部署项目
##===========================