You can create your Docker deployment without using the provided deploy scripts. Docker can build a custom container image by reading instructions from a Dockerfile. This topic provides examples of how to update a Dockerfile to customize PAS for OpenEdge within a custom container image.

Create a PAS for OpenEdge instance

An instance consists of a set of OpenEdge ABL applications and instance-level configurations. The following is the directory structure:
conf
Instance-level configurations are defined in this directory.
tlr
This directory contains the run-time properties to be tailored at the instance level.
ablapps
This directory contains the archive files for your ABL application.

Create an instance archive file

To create an instance archive file, create an ablapps directory, and place your ABL application archives inside it. If you have conf and tlr directories, then keep them with the ablapps directory. After setting up your directories, create an archive file from the three directories.
Note: It is not mandatory to have the conf and tlr folders to create an instance archive.

Deploy using the stand-alone Docker image

You can create a stand-alone Docker image containing PAS for OpenEdge and an ABL application by using a Dockerfile. Everything needed for a PAS for OpenEdge application is contained in this one image.

You must configure environment variables and provide some configurations when you create a Dockerfile:

INSTANCE_NAME
This environment variable defines the name of the PAS for OpenEdge instance. The name is used when creating a PAS for OpenEdge instance in the Docker container. This environment variable is mandatory.
APP_NAME
(Optional) This environment variable defines the application name used when Fluent Bit logging is enabled. The name is logged as a new field in each log entry.
FLUENTBIT_LOGGING
(Optional) Fluent Bit logging is enabled by default. To disable logging, change this environment variable property to false.

You can provide run-time configurations by creating a runtime.properties file and placing it in /deploy/scripts/config. For example, to provide the database configuration for an ABL application, provide the following configuration:

ABLAPP-NAME.DB.CONNECTION.PARAMS=-db additional parameters
There are two ways to create a Dockerfile:
  • Create a Dockerfile using JDK as a Docker image:
    FROM JDK Docker image name:JDK Docker image tag as builder-jdk
                  
                  FROM progresssoftware/prgs-pasoe:12.x.x
                  
                  USER pscadmin
                  
                  COPY --chown=pscadmin:pscadmin Path of the license file /psc/dlc/progress.cfg
                  
                  COPY --from=builder-jdk --chown=pscadmin:pscadmin Java location inside the JDK Docker image /usr/java
                  
                  COPY --chown=pscadmin:pscadmin Path to deployable application /deploy/artifacts/
                  
                  #COPY --chown=pscadmin:pscadmin Path to runtime properties file /deploy/scripts/config
                  
                  ENV \
                  INSTANCE_NAME="instance name" \
                  APP_NAME="application name" \
                  FLUENTBIT_LOGGING=true/false 
                  
                  EXPOSE 8811 
                  
                  CMD ["/bin/sh", "-c", "sh /deploy/scripts/startServer.sh"]
                
  • Create a Dockerfile using the downloaded JDK:
    FROM progresssoftware/prgs-pasoe:12.x.x
                  
                  USER pscadmin
                  
                  COPY --chown=pscadmin:pscadmin Path of the license file /psc/dlc/progress.cfg
                  
                  COPY --chown=pscadmin:pscadmin Path of the installed JDK location /usr/java
                  
                  COPY --chown=pscadmin:pscadmin Path to deployable application /deploy/artifacts/
                  
                  #COPY --chown=pscadmin:pscadmin Path to runtime properties file /deploy/scripts/config
                  
                  ENV \
                  INSTANCE_NAME="instance name" \
                  APP_NAME="application name" \
                  FLUENTBIT_LOGGING=true/false 
                  
                  EXPOSE 8811 
                  
                  CMD ["/bin/sh", "-c", "sh /deploy/scripts/startServer.sh"]
                
After the Dockerfile is created, build and run the container:
  1. Build the new image:
    docker build . -t PAS image name
  2. Run the container:
    docker run --name Container name -p host port:8811 PAS image name
To verify that the PAS for OpenEdge server is running, enter https://host ip:host port in your browser.