Installing WebSphere Application Server on Docker: A Quick Tutorial

Daniel BenitezDaniel Benitez
6 min read

πŸ“‹ Overview

This guide walks through the steps to:

  • Pull an Oracle Linux 8.10 Docker image

  • Create and run a container with required ports

  • Install necessary packages for WebSphere on RHEL 8-compatible systems

  • Install IBM Installation Manager (IIM)

  • Install WebSphere Application Server (WAS) using response files

πŸ“ Prerequisites

  • Docker installed on host machine

  • Access to IBM WebSphere and IIM installation binaries

  • Response files for silent installation of IIM and WAS

  • Internet access for package installation

🧱 Pull Oracle Linux 9 Base Image

docker pull oraclelinux:9
9: Pulling from library/oraclelinux
b2ba127a66c2: Pull complete
Digest: sha256:9b94175f751ae45517a7f8bcb1e78a466e0064dd0c7db1fed2a15810f9871311
Status: Downloaded newer image for oraclelinux:9
docker.io/library/oraclelinux:9
docker images
REPOSITORY         TAG       IMAGE ID       CREATED         SIZE
oraclelinux        9         8a8d288339e3   5 days ago      239MB

πŸš€ Container Creation

Run the following command to start a container and expose the necessary ports:

docker run -dt --name was9-container \
  -p 9060:9060 \   # Admin Console (HTTP)
  -p 9043:9043 \   # Admin Console (HTTPS)
  -p 9080:9080 \   # Application HTTP
  -p 9443:9443 \   # Application HTTPS
  -v "C:\Users\DBENITEZA\Documents\software:/opt/software"
  -v "C:\Users\DBENITEZA\Documents\github\ansible_was:/workdir"
  oraclelinux:9

Here’s the one-line Docker command:

docker run -dt --name was9-container -p 9060:9060 -p 9043:9043 -p 9080:9080 -p 9443:9443 -v "C:\Users\DBENITEZA\Documents\software:/opt/software" -v "C:\Users\DBENITEZA\Documents\github\ansible_was:/workdir" oraclelinux:9

πŸ” Port Reference

PortDescription
9060Admin Console (HTTP)
9043Admin Console (HTTPS)
9080Application HTTP
9443Application HTTPS

These are the default ports used by WAS 9. You can customize them during profile creation or via configuration files.


πŸ”§ Disable SSL Verification and Install Additional Packages

To avoid SSL certificate issues when installing packages like oracle-epel-release-el8, disable SSL verification in the YUM configuration:

# Disable SSL verification to prevent certificate errors
echo "sslverify=false" >> /etc/yum.conf

# Install update, EPEL repository and Ansible
dnf update -y
dnf -y install oracle-epel-release-el9
dnf -y install ansible
dnf -y install tree
dnf install -y unzip
⚠
Note: Without disabling sslverify, you may encounter the following error: SSL certificate problem: unable to get local issuer certificate

πŸ“¦ Install Required Packages

Before installing WebSphere Application Server 9, you must ensure the system has the required packages and configurations. These steps are essential for both graphical and command-line installations.

Run the following command inside your container or host system to install the necessary packages:

dnf install -y gtk2 libXtst xorg-x11-fonts-Type1 psmisc libnsl chkconfig libxcrypt-compat

For full details, refer to IBM’s official guide:
πŸ”— Preparing Red Hat Enterprise Linux 9 for installation


πŸ“‚ Mounted Software Directory from Host

To simplify installation, a local directory from the host machine has been mounted into the container, providing access to all required software binaries.

bash-5.1# tree /opt/software/
/opt/software/
└── was9
    β”œβ”€β”€ iim
    β”‚   └── agent.installer.linux.gtk.x86_64_1.9.2002.20220323_1321.zip
    β”œβ”€β”€ jdk
    β”‚   β”œβ”€β”€ jdk-11.0.27_linux-x64_bin.tar.gz
    β”‚   β”œβ”€β”€ jdk-8u202-linux-i586.tar.gz
    β”‚   └── sdk.repo.8035.java8.linux.zip
    └── was
        β”œβ”€β”€ was.repo.90501.base.zip
        └── was.repo.90501.nd.zip
βœ”
This setup allows direct access to installation files from within the container, streamlining the installation of JDKs, IBM Installation Manager, and WebSphere Application Server.

πŸ“₯Install IBM Installation Manager (IIM)

The response file for IBM Installation Manager (/workdir/iim_response.rsp) is stored in a mounted directory from the host machine:

<?xml version="1.0" encoding="UTF-8"?>
<agent-input clean='true' temporary='true'>
    <server>
         <repository location='/tmp/iim'/>
    </server>
    <install>
        <offering features='agent_core,agent_jre' id='com.ibm.cic.agent' version='1.9.2002.20220323_1321'/>
    </install>
</agent-input>

Before running the installc command, unzip the Installation Manager archive to a temporary directory. This avoids cluttering permanent paths and allows for clean-up after installation.

mkdir -p /tmp/iim
unzip /opt/software/was9/iim/agent.installer.linux.gtk.x86_64_1.9.2002.20220323_1321.zip -d /tmp/iim
cd /tmp/iim

mkdir -p /opt/IBM /opt/IBM/InstallationManager /opt/IBM/InstallationManagerData

./installc -acceptLicense -input /workdir/iim_response.rsp \
-installationDirectory /opt/IBM/InstallationManager  \
-dataLocation /opt/IBM/InstallationManagerData  \
-log /opt/IBM/iim_install_log_$(date +%Y%m%d).log
πŸ’‘
After installation, you can safely delete /tmp/iim to free up space.
bash-5.1# ./installc -acceptLicense -input /opt/ansible-workdir/iim_response.rsp \
> -installationDirectory /opt/IBM/InstallationManager  \
> -dataLocation /opt/IBM/InstallationManagerData  \
> -log /opt/IBM/iim_install_log_$(date +%Y%m%d).log

Installed com.ibm.cic.agent_1.9.2002.20220323_1321 to the /opt/IBM/InstallationManager/eclipse directory.

For full details, refer to IBM’s official guide:
πŸ”— Installing Installation Manager
πŸ”— Installing the product offerings by using response files


🌐 Install WebSphere Application Server (WAS)

Software Location

The following files are available in the mounted directory /opt/software/was9 (both zip files and unarchived):

/opt/software/was9/
β”œβ”€β”€ was/
β”‚   └── was.repo.90501.base.zip
β”‚   └── was.repo.90501.base
β”œβ”€β”€ jdk/
β”‚   └── sdk.repo.8035.java8.linux.zip
β”‚   └── sdk.repo.8035.java8.linux
  • WAS installation directory: /opt/IBM/WebSphere/AppServer

  • JDK installation directory: /opt/IBM/Java80

Modified Response File: was_response.xml

Assuming you have the WAS installer .zip and a response file /workdir/was_response.xml:

<?xml version='1.0' encoding='UTF-8'?>
<agent-input>
  <variables>
    <variable name='sharedLocation' value='/opt/IBM/IMShared'/>
  </variables>
  <server>
    <repository location='/opt/software/was9/was/was.repo.90501.base'/>
    <repository location='/opt/software/was9/jdk/sdk.repo.8035.java8.linux'/>
  </server>
  <profile id='IBM WebSphere Application Server V9.0' installLocation='/opt/IBM/WebSphere/AppServer'>
    <data key='cic.selector.arch' value='x86_64'/>
  </profile>
  <install>
    <!-- WebSphere Application Server -->
    <offering profile='IBM WebSphere Application Server V9.0'
              id='com.ibm.websphere.BASE.v90'
              version='9.0.5001.20190828_0616'
              features='core.feature,ejbdeploy,thinclient,embeddablecontainer'
              installFixes='none'/>

    <!-- Java SDK -->
    <offering profile='IBM WebSphere Application Server V9.0'
              id='com.ibm.java.jdk.v8'
              version='8.0.5035.20190422_0948'
              features='com.ibm.sdk.8'/>
  </install>
  <preference name='com.ibm.cic.common.core.preferences.eclipseCache' value='${sharedLocation}'/>
</agent-input>

Installation Command

/opt/IBM/InstallationManager/eclipse/tools/imcl \
  input /workdir/was_response.xml \
  -acceptLicense -sP \
  -record /opt/ansible-workdir/auto_was_base_response.xml \
  -log /opt/IBM/was_install_log_$(date +%Y%m%d).log

Example output:

bash-5.1# /opt/IBM/InstallationManager/eclipse/tools/imcl   input /workdir/was_response.xml   -acceptLicense -sP   -record /opt/ansible-workdir/auto_was_response.xml   -log /opt/IBM/was_install_log_$(date +%Y%m%d).log.log
                 25%                50%                75%                100%
------------------|------------------|------------------|------------------|
............................................................................
Installed com.ibm.websphere.BASE.v90_9.0.5001.20190828_0616 to the /opt/IBM/WebSphere/AppServer directory.
Installed com.ibm.java.jdk.v8_8.0.5035.20190422_0948 to the /opt/IBM/WebSphere/AppServer directory

βœ… Verification

After installation, verify the WAS profile and start the server:

bash-5.1# /opt/IBM/InstallationManager/eclipse/tools/imcl listInstalledPackages
com.ibm.cic.agent_1.9.2002.20220323_1321
com.ibm.java.jdk.v8_8.0.5035.20190422_0948
com.ibm.websphere.BASE.v90_9.0.5001.20190828_0616

For full details, refer to IBM’s official guide:
πŸ”— WebSphere Application Server installation information
πŸ”— Response file examples and modification


πŸ—οΈ Create a WebSphere Profile After Installation

Once WAS Base 9.0.5.01 is installed, you need to create a standalone application server profile using the manageprofiles.sh script.

  • Profile name: AppSrv01

  • Profile path: /opt/IBM/WebSphere/AppServer/profiles/AppSrv01

πŸ› οΈ Command to Create the Profile


/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh \
  -create \
  -profileName AppSrv01 \
  -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default \
  -serverName server1 \
  -enableAdminSecurity true -adminUserName wasadmin -adminPassword wasadmin123
πŸ”’
You can enable admin security by setting -enableAdminSecurity true and providing credentials with -adminUserName and -adminPassword.
❓
If you do not specify -profilePath, WebSphere will automatically create the profile in the default profiles directory: /opt/IBM/WebSphere/AppServer/profiles/<profileName>

Example output:

bash-5.1# /opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh \
>   -create \
>   -profileName AppSrv01 \
>   -templatePath /opt/IBM/WebSphere/AppServer/profileTemplates/default \
>   -serverName server1 \
>   -enableAdminSecurity true -adminUserName wasadmin -adminPassword wasadmin123

INSTCONFSUCCESS: Success: Profile AppSrv01 now exists. Please consult /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/AboutThisProfile.txt for more information about this profile.

βœ… Verify the Profile

/opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -listProfiles

Example output:

bash-5.1# /opt/IBM/WebSphere/AppServer/bin/manageprofiles.sh -listProfiles
[AppSrv01]

For full details, refer to IBM’s official guide:
πŸ”— Creating application server profiles
πŸ”— manageprofiles command

πŸš€ Start the Server and Configure Ports After Profile Creation

Once the profile is created, you can start the application server and customize its port configuration.

πŸ› οΈ Start the Server

/opt/IBM/WebSphere/AppServer/profiles/<profile-name>/bin/startServer.sh server1

Replace <profile-name> with actual value from your environment.

πŸ’‘
This starts the default server instance (server1) within the AppSrv01 profile.

Example output:

bash-5.1# /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/bin/startServer.sh server1
ADMU0116I: Tool information is being logged in file
           /opt/IBM/WebSphere/AppServer/profiles/AppSrv01/logs/server1/startServer.log
ADMU0128I: Starting tool with the AppSrv01 profile
ADMU3100I: Reading configuration for server: server1
ADMU3200I: Server launched. Waiting for initialization status.
ADMU3000I: Server server1 open for e-business; process id is 2520

For full details, refer to IBM’s official guide:
πŸ”— Starting an application server

πŸ”§ Configured Ports

WebSphere uses a set of default ports for HTTP, HTTPS, admin console, and more.

  • HTTP Transport (default): 9080

  • HTTPS Transport (default): 9443

  • Admin Console (HTTP): 9060

  • Admin Console (HTTPS): 9043

Access the Admin Console at:
πŸ”— http://localhost:9060/ibm/console/
πŸ” https://localhost:9443/ibm/console/

0
Subscribe to my newsletter

Read articles from Daniel Benitez directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Daniel Benitez
Daniel Benitez

πŸ‘‹ Hi! I’m Dani, a passionate automation, Ansible, DevOps, and Cloud technologies enthusiast. I currently work as a Middleware Solutions Architect at Atradius, leading middleware automation and optimizing IT infrastructure. πŸ’‘ My Story: I started my career specializing in Oracle Middleware, working with technologies such as WebLogic, Oracle Database, Oracle iPlanet Web Server, and Oracle JDK. Over time, my focus shifted towards deployment automation, continuous integration, and process optimization in complex enterprise environments. πŸš€ Impact & Achievements: βœ… Direct the automation of Oracle Fusion Middleware (FMW) with Ansible, streamlining the installation, configuration, and patching processes for Oracle WebLogic, SOA Suite, and OSB. βœ… Lead IBM WebSphere Application Server (WAS) automation with Ansible and AWX, including installation, configuration, certificates, and deployments, reducing implementation times by 70%. βœ… Integrated Azure DevOps with AWX, eliminating manual deployment tasks and reducing human intervention to a simple approval step. βœ… Mentor and train teams on Ansible automation, fostering continuous improvement and knowledge transfer. πŸ€πŸ₯Ž In my free time, I enjoy playing padel and basketball, always looking for new challenges and improvements, both in sports and technology. I also love building web applications with Oracle APEX, bringing ideas to life through low-code development. πŸ“₯ Let’s connect! πŸ“§ Email: dbenitez.vk@gmail.com πŸ”— LinkedIn: https://www.linkedin.com/in/danielbenitezaguila πŸ’» GitHub: https://github.com/dbeniteza