Oracle Forms & Reports on Docker - The Concept and Technique behind
Posted by Dirk Nachbar on Thursday, December 07, 2017
In the last days I was working on my Oracle Forms & Reports in Docker solution and I already published it via my blog and in my personal GitHub Repository.
- Oracle Forms & Reports 12.2.1.2.0 in Docker: http://dirknachbar.blogspot.com/2017/11/oracle-forms-reports-122120-in-docker.html
- Oracle Forms & Reports 12.2.1.3.0 in Docker: http://dirknachbar.blogspot.com/2017/12/oracle-forms-reports-122130-in-docker.html
- Oracle Forms & Reports 12.2.1.3.0 with FADS in Docker: http://dirknachbar.blogspot.com/2017/12/oracle-forms-reports-122130-with-fads.html
- GitHub Repository with all sources: https://github.com/DirkNachbar/Docker
With this blog post, I want to explain the Concept and Technique behind my solution and the motivation.
Lets start with the motivation :-) With the Oracle Forms & Reports 12.2.x releases, Oracle has decided to remove the option to create script-based the WebLogic Domain for Oracle Forms & Reports. In case, I just have to install and configure one server with Oracle Forms & Reports, its quite fine to click through the Domain Configuration Wizard, but normally you don't have to configure just one environment, mostly 3 or more environments. Questions directed to Oracle, if the script-based configuration will be enabled again, were just answered with "you have to use the graphical Domain Configuration Wizard" ...
So, Jan-Peter Timmermann (https://jan-peter.me), Robert Crames (http://robertcrames.blogspot.ch) and I, were developing together a script set for installation and configuration of a complete Oracle Forms & Reports 12.2.x environment on Unix (Linux and so on) Servers, because we couldn't accept the fact, that we should start the Domain Configuration Wizard and click through several times just to create multiple Oracle Forms & Reports 12.2.x environments.
The blog posts including the source code with the above mentioned solution can be found here:
- How to install and configure Oracle Forms & Reports 12c fully unattended - Part 1: http://dirknachbar.blogspot.com/2017/05/how-to-install-and-configure-oracle.html
- How to install and configure Oracle Forms & Reports 12c fully unattended - Part 2: http://robertcrames.blogspot.ch/2017/05/how-to-install-and-configure-oracle.html
We used this solution in our own test labs and also in real-life for customers, which reduced the efforts in installing and configuring Oracle Forms & Reports 12.2.x environments dramatically.
As I am a Docker fan and using heavily the by Oracle provided Docker solutions on https://github.com/oracle/docker-images, the next step was for me, to convert/integrate our script based solution for Oracle Forms & Reports into a Docker Image and here we are ...
The concept and technique behind the Oracle Forms & Reports in Docker solution is quite straight forward and simple.
Assuming you have a server with Docker (I personally prefer an Oracle Enterprise Linux 7.4 with Docker Engine from the Oracle Repos), you just have to decide if your Oracle Database for the required Metadata Repository for Oracle Forms & Reports should be also residing in your Docker or you have somewhere else (native) an Oracle Database (I am using an Oracle Database inside Docker on the same Docker server).
So at first you will pull your Oracle Linux 7 Image, which will be used as Base Image for your Oracle Database Image. For this I highly recommend the Oracle provided solution on GitHub (https://github.com/oracle/docker-images/tree/master/OracleDatabase) mainly maintained by Gerald Venzl (https://twitter.com/GeraldVenzl). After you got your Oracle DB Image installed, you just have to create your Oracle Database by following the instructions on https://github.com/oracle/docker-images/tree/master/OracleDatabase#running-oracle-database-in-a-docker-container.
The next step is to build up your Oracle Forms & Reports Stack, just get a copy of my GitHub Repository https://github.com/DirkNachbar/Docker. Download all the required Software binaries (JDK, Oracle WebLogic Server Infrastructure, Oracle Forms & Reports, optionally SQL Developer if you want to use Forms Application Deployment Services) for your desired Release (currently I am supporting Forms & Reports 12.2.1.2.0 and 12.2.1.3.0 ).
The first step is to create your JDK Image (I am using a full JDK and not a server-side version), based on Oracle Linux 7 Base Image (will be automatically pulled if not present).
As next you will need to create your WebLogic Server Infrastructure Image based on the prior created JDK Image. Within the creation of the WebLogic Server Infrastructure Image, I am also installing all required RPM's for Oracle Forms & Reports and fixing the libXm.so bug (without this fix Oracle Reports will not work).
After that you will need to create the Forms & Reports Image, based on the prior created WebLogic Server Infrastructure Image. During the build of the Oracle Forms & Reports Image, all required scripts for the Domain creation will be copied into the Image. These scripts will be used in the final step by the docker-compose file. In case you are using Forms & Reports 12.2.1.3.0, you have also the option to use Forms Application Deployment Services (FADS). For this, if the variable DC_FADS12C is set to true in the OracleFormsReports/setenv.sh, the Image will transfer the required SQL Developer binary file and replace the old version of the SQL Developer under the Oracle Forms & Reports ORACLE_HOME directory.
Before you proceed with the final step to create your Forms & Reports Domain, you need to align the script OracleFormsReports/setenv.sh. This is the most important step before you start with the Domain creation.
Most of the variables, which will be declared within the setenv.sh script are self-explained, like DC_ADM_USER, DC_ADM_PWD and so on). Some variables you need to take care very well, like the DC_DB%. In case you don't align them to your environment, the creation of the Metadata Repository will fail and finally your Domain creation will fail.
Another important variable is DC_USERHOME, this one configures the to be used volume on your Docker host, which will be mapped from your Docker Container. I am using volumes within the Forms & Reports Docker Container, which will contain the complete DOMAIN_HOME, because this allows you later on, to configure directly from your Docker host on the defined volume various settings, eg. formsweb.cfg, rwserver.conf, httpd.conf and so on. The defined DC_USERHOME you will have to create before you are starting with the Domain creation.
Finally (make sure that your target Database for the Metadata Repository is up and running) you can start the Domain Creation with the provided docker-compose file, which will create you a base domain, extend this with Forms & Reports, configure an Oracle HTTP Server (OHS) and creates you a Reports Server and finally it will configure port-forwarding from your Docker Container to your Docker Host of the most important ports, e.g. WebLogic Admin Server, Managed Servers and Oracle HTTP Server. The provided docker-compose script will take all the defined variables from the setenv.sh script and push them into to the to-be created Container, so that at the beginning mentioned script-set for creating the Domain for Forms & Reports can use them.
For fans of the new feature Forms Application Deployment Services (FADS), which is available from release 12.2.1.3.0 going. I have also implemented a pre-configuration task within the Domain creation for FADS, so that you just need later on, when your Container is running, to execute the fads_config.py script to get your FADS functionality.
In case something goes wrong during the Domain creation, you can easily wipe out your half-Docker Container with "docker rm frfmw" and dont forget to cleanup below your defined volume ($DC_USERHOME/user_projects) potentially created directories like domains or applications. And then you can restart with the docker-compose your creation of the Docker Container.
The last step is, after a successful build of the Docker Container, to start the Container. For this you can use the command "docker start frfmw" and thats all ...
I will regularly update or enhance my Docker solution for Oracle Forms & Reports, so check out my GitHub Repository (https://github.com/DirkNachbar/Docker) from time to time. Or if you have some specific needs, just drop me a message here or give me a message in Twitter (https://twitter.com/DirkNachbar) or create a Issue on the GitHub Repository.
Last words: even when Oracle tells you, something is not possible, mostly it is ;-)
I hope you will enjoy and use my Docker solution for Oracle Forms & Reports ;-)