使用Dockerfile创建weblogic镜像

    本文使用的weblogic的版本为weblogic 12.2.1.2。镜像为CentOS7.2.115,docker版本为1.10.4。jdk的版本为64位的1.8.112。
    目录结构如下:
[root@env1 12.2.1.2]# ll
total 810184
drwxr-xr-x 2 root root        68 Oct 26 14:29 container-scripts
-rw-r--r-- 1 root root      2127 Oct 26 15:33 Dockerfile
-rw-r--r-- 1 root root 829588063 Oct 26 01:06 fmw_12.2.1.2.0_wls_Disk1_1of1.zip
-rw-r--r-- 1 root root       225 Oct 25 08:50 install.file
drwxr-xr-x 8 root root      4096 Sep 23 12:24 jdk
-rw-r--r-- 1 root root        55 Oct 26 13:30 oraInst.loc
    install.file内容如下:
# Copyright (c) 2014-2015 Oracle and/or its affiliates. All rights reserved.
[ENGINE]

#DO NOT CHANGE THIS.
Response File Version=1.0.0.0.0

[GENERIC]

DECLINE_SECURITY_UPDATES=true
SECURITY_UPDATES_VIA_MYORACLESUPPORT=false
    oraInst.loc内容如下:
inventory_loc=/opt/oracle/.inventory
inst_group=oracle
    fmw_12.2.1.2.0_wls_Disk1_1of1.zip为weblogic的安装文件,去oracle的官网上下载即可。
    jdk为64位的1.8.112,目录结构如下:
[root@env1 jdk]# ll
total 25908
drwxr-xr-x 2 root root     4096 Sep 23 12:21 bin
-r--r--r-- 1 root root     3244 Sep 23 12:20 COPYRIGHT
drwxr-xr-x 4 root root      115 Sep 23 12:20 db
drwxr-xr-x 3 root root      125 Sep 23 12:20 include
-rwxr-xr-x 1 root root  5094021 Sep 23 04:00 javafx-src.zip
drwxr-xr-x 5 root root     4096 Sep 23 12:21 jre
drwxr-xr-x 5 root root     4096 Sep 23 12:21 lib
-r--r--r-- 1 root root       40 Sep 23 12:20 LICENSE
drwxr-xr-x 4 root root       44 Sep 23 12:20 man
-r--r--r-- 1 root root      159 Sep 23 12:20 README.html
-rw-r--r-- 1 root root      526 Sep 23 12:20 release
-rw-r--r-- 1 root root 21112816 Sep 23 12:20 src.zip
-rwxr-xr-x 1 root root   110114 Sep 23 04:00 THIRDPARTYLICENSEREADME-JAVAFX.txt
-r--r--r-- 1 root root   177094 Sep 23 12:20 THIRDPARTYLICENSEREADME.txt
    container-scripts文件结构如下:
[root@env1 container-scripts]# ll
total 8
-rw-r--r-- 1 root root 1957 Oct 26 14:29 createAndStartEmptyDomain.sh
-rw-r--r-- 1 root root 2206 Oct 26 13:35 create-wls-domain.py
    createAndStartEmptyDomain.sh内容如下:
#!/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=1
if [ ! -f ${DOMAIN_HOME}/servers/AdminServer/logs/AdminServer.log ]; then
    ADD_DOMAIN=0
fi

# Create Domain only if 1st execution
if [ $ADD_DOMAIN -eq 0 ]; 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()
    Dockerfile内容如下:
FROM centos:latest
MAINTAINER The CentOS Test Images 


# WLS Configuration (editable during build time)
# ------------------------------
ARG ADMIN_PASSWORD="web12345678"

RUN mkdir -p /opt/oracle/jdk

# Environment variables required for this build (do NOT change)
# -------------------------------------------------------------

ENV JAVA_HOME=/opt/oracle/jdk \
    FMW_PKG=fmw_12.2.1.2.0_wls_Disk1_1of1.zip \
    FMW_JAR=fmw_12.2.1.2.0_wls.jar \
    SCRIPT_FILE=/opt/oracle/createAndStartEmptyDomain.sh \
    ORACLE_HOME=/opt/oracle \
    USER_MEM_ARGS="-Djava.security.egd=file:/dev/./urandom" \
    DEBUG_FLAG=true \
    PRODUCTION_MODE=dev \
    DOMAIN_NAME="${DOMAIN_NAME:-base_domain}" \
    DOMAIN_HOME=/opt/oracle/user_projects/domains/${DOMAIN_NAME:-base_domain} \
    ADMIN_PORT="${ADMIN_PORT:-7001}" \
    PATH=$PATH:/opt/oracle/jdk/bin:/opt/oracle/oracle_common/common/bin:/opt/oracle/wlserver/common/bin

# Copy packages
# -------------
COPY /jdk  /opt/oracle/jdk
COPY $FMW_PKG install.file oraInst.loc /opt/
COPY container-scripts/createAndStartEmptyDomain.sh container-scripts/create-wls-domain.py /opt/oracle/

# ------------------------------------------------------------
RUN chmod a+xr /opt && \
    chmod +xr $SCRIPT_FILE && \
    useradd -b /opt -M -s /bin/bash oracle && \
    chown oracle:oracle -R /opt && \
    echo oracle:oracle | chpasswd && \
    cd /opt && $JAVA_HOME/bin/jar xf /opt/$FMW_PKG && cd - && \
    su -c "$JAVA_HOME/bin/java -jar /opt/$FMW_JAR -silent -responseFile /opt/install.file -invPtrLoc /opt/oraInst.loc -jreLoc $JAVA_HOME -ignoreSysPrereqs -force -novalidation ORACLE_HOME=/opt/oracle INSTALL_TYPE=\"WebLogic Server\"" - oracle 

RUN rm /opt/$FMW_JAR /opt/$FMW_PKG /opt/oraInst.loc /opt/install.file

WORKDIR ${ORACLE_HOME}

# Define default command to start script. 
CMD ["/opt/oracle/createAndStartEmptyDomain.sh"]
    构建镜像:
[root@env1 12.2.1.2]# docker build -t weblogic:basess -f Dockerfile /12.2.1.2
    查看镜像:
[root@env1 Desktop]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
weblogic            basess              d41a9e1f0717        59 minutes ago      4.269 GB
docker.io/centos    latest              980e0e4c79ec        7 weeks ago         196.7 MB
    启动镜像:
[root@env1 /]# docker run -ti -p 7001:7001 --name weblogic d41a9e1f0717 

    Oracle WebLogic Server Auto Generated Empty Domain:

      ----> 'weblogic' admin password: 12345678


Initializing WebLogic Scripting Tool (WLST) ...

Welcome to WebLogic Server Administration Scripting Shell

Type help() for help on available commands

domain_name : [base_domain]
admin_port  : [7001]
domain_path : [/opt/oracle/user_projects/domains/base_domain]
production_mode : [dev]


Exiting WebLogic Scripting Tool.

.
.
JAVA Memory arguments: -Djava.security.egd=file:/dev/./urandom
。。。。。。
    等服务起来后,通过http://localhost:7001/console登陆控制台。
    weblogic 12.1.1以后通过silent静默安装的时候不需要silent.xml文件,配置好responseFile和invPtrLoc就可以,12.1.1及其以前的需要通过配置silent.xml文件静默安装。silent.xml文件内容如下:
<?xml version="1.0" encoding="UTF-8"?>
   <bea-installer> 
     <input-fields>
       <data-value name="BEAHOME" value="/opt/bea11g" />
       <data-value name="WLS_INSTALL_DIR" value="/opt/bea11g/wlserver_12.1" />
       <data-value name="BEA_BUNDLED_JVMS" value="/opt/bea11g/jrockit"/>
   </input-fields> 
</bea-installer>
    Docfile文件内容如下(里面有部分没用的内容):
FROM centos:latest
MAINTAINER The CentOS Test Images

RUN mkdir -p /opt/oracle

ENV JAVA_HOME=/opt/bea11g/jrockit \
    FMW_JAR=wls1211_generic.jar \
    ORACLE_HOME=/opt/bea11g \
    USER_MEM_ARGS="-Djava.security.egd=file:/dev/./urandom" \
    DEBUG_FLAG=true \
    PRODUCTION_MODE=prod \
    DOMAIN_NAME="${DOMAIN_NAME:-oa7001}" \
    DOMAIN_HOME=/opt/bea11g/user_projects/domains/${DOMAIN_NAME:-oa7001} \
    ADMIN_PORT="${ADMIN_PORT:-7001}" \
    PATH=%JAVA_HOME%/bin:/opt/bea11g/oracle_common/common/bin:/opt/bea11g/wlserver/common/bin:$PATH

# Copy packages
# -------------
COPY jrockit  /opt/bea11g/jrockit
COPY $FMW_JAR install.file oraInst.loc silent.xml /opt/
#COPY container-scripts/* /opt/bea11g/

# Setup filesystem and oracle user
# Install and configure Oracle JDK
# Adjust file permissions, go to /u01 as user 'oracle' to proceed with WLS installation
# ------------------------------------------------------------


# Configuration of WLS Domain
WORKDIR /opt
RUN chmod a+xr /opt && \
    useradd -b /opt -M -s /bin/bash oracle && \
    chown oracle:oracle -R /opt && \
    echo oracle:oracle | chpasswd  && \
    cd /opt && \
    su -c "$JAVA_HOME/bin/java  -Djava.security.egd=file:/dev/./urandom -jar /opt/$FMW_JAR -mode=silent -silent_xml=/opt/silent.xml " - oracle && \
    rm -rf /opt/$FMW_JAR /opt/oraInst.loc /opt/install.file /opt/silent.xml


# Define default command to start bash. 
CMD ["bash"]
    通过docker build 生成镜像。
[root@localhost weblogic]# docker build -t weblogic:base -f Dockerfile /home/docker/weblogic/
Sending build context to Docker daemon 1.414 GB
Step 1 : FROM centos:latest
 ---> 980e0e4c79ec
Step 2 : MAINTAINER The CentOS Test Images
 ---> Running in e56149cd26d9
 ---> 6b0dd41e0233
Removing intermediate container e56149cd26d9
Step 3 : RUN mkdir -p /opt/oracle
 ---> Running in d3553846194b
 ---> 8f233695db84
Removing intermediate container d3553846194b
Step 4 : ENV JAVA_HOME /opt/bea11g/jrockit FMW_JAR wls1211_generic.jar ORACLE_HOME /opt/bea11g USER_MEM_ARGS "-Djava.security.egd=file:/dev/./urandom" DEBUG_FLAG true PRODUCTION_MODE prod DOMAIN_NAME "${DOMAIN_NAME:-oa7001}" DOMAIN_HOME /opt/bea11g/user_projects/domains/${DOMAIN_NAME:-oa7001} ADMIN_PORT "${ADMIN_PORT:-7001}" PATH %JAVA_HOME%/bin:/opt/bea11g/oracle_common/common/bin:/opt/bea11g/wlserver/common/bin:$PATH
 ---> Running in ca1214b92202
 ---> 955040e41837
Removing intermediate container ca1214b92202
Step 5 : COPY jrockit /opt/bea11g/jrockit
 ---> ae198e602e8c
Removing intermediate container 7af0632bcb8b
Step 6 : COPY $FMW_JAR install.file oraInst.loc silent.xml /opt/
 ---> b9db9faa0cdb
Removing intermediate container 15d2ebaf5070
Step 7 : WORKDIR /opt
 ---> Running in 05657f33572c
 ---> 375f3402cff2
Removing intermediate container 05657f33572c
Step 8 : RUN chmod a+xr /opt &&     useradd -b /opt -M -s /bin/bash oracle &&     chown oracle:oracle -R /opt &&     echo oracle:oracle | chpasswd  &&     cd /opt &&     su -c "$JAVA_HOME/bin/java -Djava.security.egd=file:/dev/./urandom -jar /opt/$FMW_JAR -mode=silent -silent_xml=/opt/silent.xml " - oracle &&     rm -rf /opt/$FMW_JAR /opt/oraInst.loc /opt/install.file /opt/silent.xml
 ---> Running in d25ac66e221f
Extracting 0%....................................................................................................100%
Nov 1, 2016 9:33:22 AM java.util.prefs.FileSystemPreferences$2 run
INFO: Created user preferences directory.
 ---> 728f604faaf5
Removing intermediate container d25ac66e221f
Step 9 : CMD bash
 ---> Running in dac460f00a43
 ---> 5fd8b8070124
Removing intermediate container dac460f00a43
Successfully built 5fd8b8070124
    也可以将安装好的weblogic文件拷贝到镜像中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值