Monday, July 24, 2017

2. Writing Dockerfiles to install Java 8 and WebLogic 12c to create docker images

We have couple of options to create the docker images. In the last post we got the docker installed Linux environment available. Now in this post we will develop the Dockerfile such that it can create an image that can have Java JRE installed and WebLogic 12c installed.

Lets jump on the task where we will prepare, create the Dockerfile and build the image and run the container to check all done successful.

Prepare software installation


Remember that official images always preferable choice. When you search for docker images from public repository that is hub.docker.com. We might get huge list some of them are Automated some of them are not.Only one will be committed as Official image. Here selecting image is also a strategy, logic inside. So carefully proceed further.

We need to install Java Development Kit JDK latest version and WebLogic in silent mode installation.

Step 1: Copy installers to data folder this is my convention I've used
Here few Dockerfile commands

FROM - used to specify the base image
MAINTAINER - tell about author
RUN - executable commands separated by &&
USER - like su command in Linux is used for switch user
ENV - environment variables definitions predefined
ADD - share directories or files
WORKDIR - login is like cd in Linux you perform some of the commands there and then you can use one more time and perform
COPY - copy the files from host machine to container it is like scp
CMD - Execute command where you can give multiple commands in double quotes
ENTRYPOINT - when container started immediately this instruction will be executed


Now we are good to go for creating the Dockerfile as follows:


# WLS DOCKERFILES PROJECT
# --------------------------
# Pull base image
# ---------------
FROM dnraikes/oraclelinux-7:latest

# Maintainer
# ----------
MAINTAINER Pavan Devarakonda 

RUN mkdir -p /u01 /data && \
    chmod a+xr /u01 && \
    useradd -b /u01 -d /u01/oracle -m -s /bin/bash oracle && \
    chown oracle:oracle -R /u01 && \
    chown oracle:oracle -R /data

USER oracle

ENV PATH=/bin:$PATH

ADD ./data /data
ADD ./silent /u01/silent
ADD  wls_installer.sh /u01/wls_installer.sh

WORKDIR /u01
RUN /u01/wls_installer.sh

I'm just doing this experiment how much size this container would make that really matters.
Step 2: Copy silent folder containing wls_install.rsp, oraInst.loc with appropriate group and inventory location. Ref : Single hit installation of WebLogic 12c on Vagrant box

JDK, WebLogic Installation

Revisiting last blog post few changes made which will be help you to prepare the docker image while it creates image it will install JDK and WebLogic into the intermediate containers.

#!/bin/bash
# This script will be installing JDK installing WebLogic in silent mode
#
#- Info
#-    Author   : Pavan Devarakonda
#-    Date     : 30-March-2017
##############################################3

JDK_INSTALLER=jdk-8u121-linux-x64.tar.gz
JDK_INSTALLER_PATH=/data
INSTAL_LOC=/u01/oracle

echo "installing JDK ${JDK_INSTALLER}"
cd $INSTAL_LOC
tar -zxvf $JDK_INSTALLER_PATH/$JDK_INSTALLER

ls -l
echo confirm JDK installation
cd $INSTAL_LOC/jdk*

JAVA_HOME=`pwd`
echo "export JAVA_HOME=$JAVA_HOME">>$HOME/.bashrc
echo "export PATH=$JAVA_HOME/bin:$PATH">>$HOME/.bashrc

. $HOME/.bashrc

echo "Check for java version"
java -version

echo Installing WebLogic now...
WLS_INSTALLER=fmw_12.2.1.0.0_wls.jar
WLS_INSTALLER_PATH=/data

SILENT_DIR=/u01/silent

java -jar $WLS_INSTALLER_PATH/$WLS_INSTALLER -silent -invPtrLoc $SILENT_DIR/oraInst.loc -responseFile $SILENT_DIR/wls_install.rsp

echo "WebLogic $WLS_INSTALLER installed successfully...."
echo .
echo setting MW_HOME ...
MW_HOME=`grep ORACLE_HOME $SILENT_DIR/wls_install.rsp |cut -d'=' -f2`
echo "export MW_HOME=$MW_HOME">>$HOME/.bashrc
echo "export WL_HOME=$MW_HOME/wlserver">>$HOME/.bashrc
echo "alias wlst=$MW_HOME/oracle_common/common/bin/wlst.sh">>$HOME/.bashrc
. $HOME/.bashrc

Step 3: Run the docker build as follows:
#!/bin/bash
#

# ################## #
# BUILDING THE IMAGE #
# ################## #
echo "Building image '$IMAGE_NAME' ..."

IMAGE_NAME="wlsimg"
NOCACHE=true

BUILD_START=$(date '+%s')
docker build --force-rm=$NOCACHE --no-cache=$NOCACHE -t $IMAGE_NAME . || {
  echo "There was an error building the image."
  exit 1
}
BUILD_END=$(date '+%s')
BUILD_ELAPSED=`expr $BUILD_END - $BUILD_START`

echo ""

chmod u+x build.sh
./build.sh

After weblogic docker image build completed you can see the following lines at the end:
Successful execution of docker build

The docker image list looks as follows:

WebLogic docker image
Further experimenting on dockerization of WebLogic - Using containers will be posted soon.

Reference:

  1. GitHub link for Oracle-WebLogic docker build

No comments:

Post a Comment

Blurb about this blog

Blurb about this blog

Essential Middleware Administration takes in-depth look at the fundamental relationship between Middleware and Operating Environment such as Solaris or Linux, HP-UX. Scope of this blog is associated with beginner or an experienced Middleware Team members, Middleware developer, Middleware Architects, you will be able to apply any of these automation scripts which are takeaways, because they are generalized it is like ready to use. Most of the experimented scripts are implemented in production environments.
You have any ideas for Contributing to a Middleware Admin? mail to me wlatechtrainer@gmail.com
QK7QN6U9ZST6