#!/bin/bash## Copyright (c) 2014-2015 Oracle and/or its affiliates. All rights reserved.############ SIGTERM handler ############
function _term() {
echo"Stopping container."echo"SIGTERM received, shutting down database!"
sqlplus / as sysdba <<EOF
shutdown immediate;
EOF
lsnrctl stop
}
########### SIGKILL handler ############
function _kill() {
echo"SIGKILL received, shutting down database!"
sqlplus / as sysdba <<EOF
shutdown abort;
EOF
lsnrctl stop
}
# Set SIGTERM handler
trap _term SIGTERM
# Set SIGKILL handler
trap _kill SIGKILL
# If AdminServer.log does not exists, container is starting for 1st time# So it should start NM and also associate with AdminServer# Otherwise, only start NM (container restarted)
ADD_DOMAIN=1if [ ! -f${DOMAIN_HOME}/servers/AdminServer/logs/AdminServer.log ]; then
ADD_DOMAIN=0fi# Create Domain only if 1st executionif [ $ADD_DOMAIN-eq0 ]; then# Auto generate Oracle WebLogic Server admin password
ADMIN_PASSWORD="12345678"echo""echo" Oracle WebLogic Server Auto Generated Empty Domain:"echo""echo" ----> 'weblogic' admin password: $ADMIN_PASSWORD"echo""
sed -i -e"s|ADMIN_PASSWORD|$ADMIN_PASSWORD|g" /opt/oracle/create-wls-domain.py
# Create an empty domain
wlst.sh -skipWLSModuleScanning /opt/oracle/create-wls-domain.py
mkdir -p ${DOMAIN_HOME}/servers/AdminServer/security/
echo"username=weblogic" > /opt/oracle/user_projects/domains/$DOMAIN_NAME/servers/AdminServer/security/boot.properties
echo"password=$ADMIN_PASSWORD" >> /opt/oracle/user_projects/domains/$DOMAIN_NAME/servers/AdminServer/security/boot.properties
${DOMAIN_HOME}/bin/setDomainEnv.sh
fi# Start Admin Server and tail the logs${DOMAIN_HOME}/startWebLogic.sh
touch ${DOMAIN_HOME}/servers/AdminServer/logs/AdminServer.log
tail -f${DOMAIN_HOME}/servers/AdminServer/logs/AdminServer.log &
childPID=$!
wait $childPID
create-wls-domain.py内容如下:
# Copyright (c) 2014-2015 Oracle and/or its affiliates. All rights reserved.
## WebLogic on Docker Default Domain## Domain, as defined in DOMAIN_NAME, will be created in this script. Name defaults to 'base_domain'.## Since : October, 2014# Author: bruno.borges@oracle.com# ==============================================
domain_name = os.environ.get("DOMAIN_NAME", "base_domain")
admin_port = int(os.environ.get("ADMIN_PORT", "7001"))
admin_pass = "ADMIN_PASSWORD"
domain_path = '/opt/oracle/user_projects/domains/%s' % domain_name
production_mode = os.environ.get("PRODUCTION_MODE", "prod")
print('domain_name : [%s]' % domain_name);
print('admin_port : [%s]' % admin_port);
print('domain_path : [%s]' % domain_path);
print('production_mode : [%s]' % production_mode);
# Open default domain template# ======================
readTemplate("/opt/oracle/wlserver/common/templates/wls/wls.jar")
set('Name', domain_name)
setOption('DomainName', domain_name)
# Disable Admin Console# --------------------# cmo.setConsoleEnabled(false)# Configure the Administration Server and SSL port.# =========================================================
cd('/Servers/AdminServer')
set('ListenAddress', '')
set('ListenPort', admin_port)
# Define the user password for weblogic# =====================================
cd('/Security/%s/User/weblogic' % domain_name)
cmo.setPassword(admin_pass)
# Write the domain and close the domain template# ==============================================
setOption('OverwriteDomain', 'true')
setOption('ServerStartMode',production_mode)
cd('/NMProperties')
set('ListenAddress','')
set('ListenPort',5556)
set('CrashRecoveryEnabled', 'true')
set('NativeVersionEnabled', 'true')
set('StartScriptEnabled', 'false')
set('SecureListener', 'false')
set('LogLevel', 'FINEST')
# Set the Node Manager user name and password (domain name will change after writeDomain)
cd('/SecurityConfiguration/base_domain')
set('NodeManagerUsername', 'weblogic')
set('NodeManagerPasswordEncrypted', admin_pass)
# Write Domain# ============
writeDomain(domain_path)
closeTemplate()
# Exit WLST# =========
exit()