Close popover
Domenico Giffone (DomenicoGiffone_GCS)
Principal Software Solutions Engineer
Pegasystems Inc.
DomenicoGiffone_GCS Member since 2014 3 posts
Posted: July 13, 2018
Last activity: October 26, 2018

Building WebLogic Pega Docker Image

This Docker image prepares an Oracle WebLogic Server (a developer desktop licensed version of WebLogic Server) image for development purposes by creating a sample domain preconfigured to run Pega applications.

The following instructions are for building the WebLogic Pega Docker image using Linux.

Datasource and JMS resources are automatically configured according to the Pega Platform Installation Guide for Oracle WebLogic Server using the datasource.properties file.

You can find the Pega Platform Installation Guide for Oracle WebLogic Server for your Pega platform version here: https://community.pega.com/knowledgebase/products/platform

Pega archives placed in the /pega/deploy directory are automatically deployed.
Split-Schema installations are supported using Pega 7 deployment plan.

The domain name is base_domain

Pega 7 platform versions supported

  • Pega 7.3
  • Pega 7.3.1
  • Pega 7.4

Build Prerequisites

Download the following prerequisites and copy them to the directory where the Docker build file (Dockerfile) is stored.

Run Prerequisites

A database with the Pega rulebase must be installed and connected to the Docker container.


At runtime, the image exposes the following mount point as volumes:



The admin server listens to port 7001. This port can be exposed and mapped to a different host port while running the container for the first time.

WebLogic Console

WebLogic Console app is reachable at ip_address:<mapped_port>/console

Domain admin credentials are: weblogic/Pegasys1+

Note: you can change the password by providing a different one in the ADMIN_PASSWORD variable when the container is run. For example:

- e 'ADMIN_PASSWORD=my_password'


$ docker build -t prpc_wls:12.2.1 .


Prepare the datasource

Edit the datasource.properties file and provide the JDBC connection details. The following datasource.oracle.properties Oracle based sample is placed in pega/etc












datasource.test.query=SQL SELECT 1 FROM DUAL

The docker --link run option can be used to reference the database container using an alias. In the above sample (datasource.url=jdbc:oracle:thin:@oradb:1521/pega) the database alias oradb is referenced in the JDBC URL and must be provided at runtime in this way:

--link <db_container_name>:oradb

Prepare the host directories

Create the expected folder structure in your system.

The local pega directory can be used as a template.


Within this directory the following directories are expected:


Place the archives to be automatically deployed at runtime in this directory.


Place the datasource configuration file and the standard Pega configuration files in this directory. The standard Pega configuration files are:

* datasource.properties

* adminDatasource.properties (optional)

* prbootstrap.properties

* prconfig.xml

* prlogging.xml

* prlog4j2.xml

This will be used as Pega temporary directory


This directory is assigned to the ${pega.log.location} environment variable. Ensure that the prlogging.xml or prlog4j2.xml file (the file to use depends on the logging configuration selected) is updated to include this variable in file paths.


Place here the JDBC driver referenced by the -e DRIVER= run option

Run command

Run WebLogic in interactive mode using as_wls1221_ora_740 as host and container name, exposing port 7741, linking a database container db-pega-740 using the db alias, using the JDBC driver dbdriver.jar, mounting the host path obtained via bash command $(pwd) on the container volume /pega

$ docker run -it -p 7740:7001 -h as_wls1221_ora_740 --name=as_wls1221_ora_740 \

--link db-pega-740:db \

-v $(pwd):/pega \

-e 'DRIVER=dbdriver.jar' \

-e 'USER_MEM_ARGS=-Xms2048m -Xmx4096m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=1024m -XX:ReservedCodeCacheSize=256m -XX:+UseCodeCacheFlushing' \

- e 'ADMIN_PASSWORD=my_password' \


More details about the used arguments:






Launches the container in interactive mode. The Server logs are provided in the output.

Pressing CTRL+C will halt the container

-p 7740:7001


Exposes the container port 7001 on the host port 7740.

-h <hostname>


Assigns a static hostname to the container



Assigns a static name to the container. This name will be used by Docker to identify the container

-v $(pwd):/pega


Creates a bind mount point for the pega directory
In this example the bash shell will execute the command pwd and replace $(pwd) with this command's output.

-e DRIVER=<DriverName>


Uses the specified JDBC driver. The driver must be placed in the /pega/lib directory

-e 'USER_MEM_ARGS=...'


Uses the JAVA Options provided

-e 'ADMIN_PASSWORD=my_password'


Uses a custom password for the WebLogic admin account



The image to run

Dual-User Configuration

The Admin Datasource is required to automatically apply DML statements to the Pega Schemas.

Note: To inform Pega about the Admin Datasource availability, the following environment entries are required.


These string entries must contain the JNDI name of the Admin Datasource(s). Since WebLogic doesn't allow to add custom entries to the JNDI tree the Application Deployment Descriptors must be used instead.

The deployment plan in /pega/deploy/prpc/plan takes care of providing values for those entries.

Stopping a running container

Attach an interactive console to the container.
This is not required if you run the container with the -i option:

$ docker attach --sig-proxy=true Container_Name

Press CTRL+C to stop the container.

Starting an existing container

$ docker start -i -a <Container_Name>

Attached are the files from my sample. I hope this is useful to you!

DevOps Developer Knowledge Share