Heute möchte ich meine Reihe mit der Oracle Middleware und Docker fortsetzen. Doch diesmal wähle ich Windows 10 Professional als Host aus, denn dafür ist Docker mittlerweile auch verfügbar.
Wichtig ist, nach der Installation von Docker im Menü auf die Linux Container zu wechseln, statt mit den Windows Containern zu arbeiten.
Wenn das kleine Walfisch-Icon (Docker) dann weiß ist und sich nicht mehr bewegt, ist Docker erfolgreich gestartet.
Zusätzlich kann man auch in der DOS-Box fragen, ob der Befehl docker nun verfügbar ist.
Am Anfang des Probierens habe ich mich gefragt, wie komme ich denn nun beim Weblogic Docker Images gebaut, welches normalerweise mit
sh buildDockerImage.sh -v 12.2.1.3 gestartet wird. Klassische Linux Befehle in einer Windows DOS-Box wie soll das gehen? Im Endeffekt gar nicht, denn ich habe die Docker Images von Linux exportiert und dann im Anschluß in Windows importiert. Das geht so:
## auf Linux:
docker save -o /mnt/hgfs/D/formsreports12.2.1.3.tar localhost/oracle/myformsreports:12.2.1.3
## auf Windows:
docker load --input D:/formsreports12.2.1.3.tar
und ein docker images zeigt sie dann auch erfolgreich an.
Die nächste Transformation fand in den Environment-Variablen statt:
## auf Linux:
export DC_ORCL_PORT=1521
export DC_ORCL_OEM_PORT=5500
export DC_ORCL_SID=frdb
export DC_ORCL_PDB=frpdb
export DC_ORCL_SYSPWD=Oracle12c
export DC_ORCL_HOST=${DC_HOSTNAME}
## auf Windows:
SET DC_DESIRED_HOSTNAME=myformsserver
SET DC_ORCL_PORT=1521
SET DC_ORCL_OEM_PORT=5500
SET DC_ORCL_APEX_PORT=8080
SET DC_ORCL_SID=ORCLCDB
SET DC_ORCL_PDB=ORCLPDB1
SET DC_ORCL_SYSPWD=oracle
SET DC_ORCL_HOST=%DC_DESIRED_HOSTNAME%
zusätzlich habe ich mir einen festen Hostnamen ausgedacht, der auch in den Properties konfiguriert ist. In dem Zusammenhang sei gesagt, dass das Mounten von Volumes auf Windows mit dem späteren Docker Container nicht funktioniert hat, was sicherlich an irgendwelchen Rechten liegt. So werden also im Gegensatz zum Linux Host die späteren Domain-Informationen alle innerhalb des Docker Containers gespeichert. Dies ist natürlich vom Zugriff her nicht so komfortabel wie auf dem Linux Host, wo er Volume-Mount keine Probleme gemacht hat.
Im File für docker-compose habe ich auch einige Anpassungen vorgenommen, dort wird z.B. auch direkt der Hostname des neuen Containers auf den gewählten aus dem Properties-File gesetzt und ich habe noch einige weitere Environment-Variablen erzeugt, die später den Umgang mit der Domäne etwas vereinfachen.
Hier der Inhalt meines docker-compose Files:
version: "3.0"
services:
#
# The Oracle DB Definition
#
frdb:
image: oracle/database:12.1.0.2-ee
network_mode: "bridge"
ports:
- "${DC_ORCL_PORT}:1521"
- "${DC_ORCL_OEM_PORT}:5500"
- "${DC_ORCL_APEX_PORT}:8080"
environment:
- ORACLE_SID=${DC_ORCL_SID}
- ORACLE_PDB=${DC_ORCL_PDB}
- ORACLE_PWD=${DC_ORCL_SYSPWD}
container_name: frdb
#
# The Forms & Reports Servers
#
myfrfmw:
image: ${DC_REGISTRY_FR}/oracle/${DC_FR_PREFIX}formsreports:${DC_FR_VERSION}
hostname: ${DC_DESIRED_HOSTNAME}
network_mode: "bridge"
container_name: myfrfmw
command: /bin/bash -c "sleep 5s; /opt/oracle/dockertools/crDomain.sh"
ports:
- "${DC_ADMINPORT}:${DC_ADMINPORT}"
- "${DC_FORMS12C_MS_PORT}:${DC_FORMS12C_MS_PORT}"
- "${DC_REPORTS12C_MS_PORT}:${DC_REPORTS12C_MS_PORT}"
- "${DC_OHS_LISTENPORT}:${DC_OHS_LISTENPORT}"
- "${DC_NM_PORT}:${DC_NM_PORT}"
environment:
- SCRIPT_HOME=${DC_SCRIPT_HOME}
- INT_ORACLE_HOME=${DC_INT_ORACLE_HOME}
- WL_HOME=${DC_WL_HOME}
- WLST_HOME=${DC_WLST_HOME}
- MW=${DC_MW}
- DOMAIN_BASE=${DC_DOMAIN_BASE}
- APPLICATION_BASE=${DC_APPLICATION_BASE}
- APP_VZ=${DC_APP_VZ}
- FORMS12C=${DC_FORMS12C}
- FADS12C=${DC_FADS12C}
- REPORTS12C=${DC_REPORTS12C}
- WEBTIER12C=${DC_WEBTIER12C}
- OHS_COMPONENTNAME=${DC_OHS_COMPONENTNAME}
- OHS_LISTENPORT=${DC_OHS_LISTENPORT}
- OHS_SSLPORT=${DC_OHS_SSLPORT}
- TEMPLATE=${DC_TEMPLATE}
- DOMAIN_NAME=${DC_DOMAIN_NAME}
- AS_NAME=${DC_AS_NAME}
- ADM_USER=${DC_ADM_USER}
- ADM_PWD=${DC_ADM_PWD}
- ADMINPORT=${DC_ADMINPORT}
- ADMINPORTSSL=${DC_ADMINPORTSSL}
- AS_HOST=${DC_AS_HOST}
- FORMS_MS_NAME=${DC_FORMS_MS_NAME}
- FORMS12C_MS_PORT=${DC_FORMS12C_MS_PORT}
- REPORTS_MS_NAME=${DC_REPORTS_MS_NAME}
- REPORTS12C_MS_PORT=${DC_REPORTS12C_MS_PORT}
- REPORTS_IN_FORMS=${DC_REPORTS_IN_FORMS}
- REP_SERVER=${DC_REP_SERVER}
- REP_SERVER_NAME=${DC_REP_SERVER_NAME}
- REP_TOOLS_NAME=${DC_REP_TOOLS_NAME}
- NM_LISTENADDRESS=${DC_NM_LISTENADDRESS}
- NM_TYPE=${DC_NM_TYPE}
- NM_PORT=${DC_NM_PORT}
- NM_USERNAME=${DC_NM_USERNAME}
- NM_PWD=${DC_NM_PWD}
- DBUSER=${DC_DBUSER}
- DBPWD=${DC_DBPWD}
- DBROLE=${DC_DBROLE}
- COMPONENTPWD=${DC_COMPONENTPWD}
- SCHEMA_PREFIX=${DC_SCHEMA_PREFIX}
- DB_HOST=${DC_DB_HOST}
- DB_PORT=${DC_DB_PORT}
- DB_SERVICE=${DC_DB_SERVICE}
- DB_OMF=${DC_DB_OMF}
- DB_USER_PW=${DC_DB_USER_PW}
- PWDFILE=${DC_PWDFILE}
- TNS_ADMIN=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/config/fmwconfig
- FORMS_INSTANCE=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/config/fmwconfig/components/FORMS/instances/forms1/bin
- FORMS_WEBCFG=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/config/fmwconfig/servers/WLS_FORMS/applications/formsapp_12.2.1/config
- DOMAIN_DIR=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}
- DOMAIN_DIR_BIN=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/bin
- NLS_LANG=AMERICAN_AMERICA.AL32UTF8
- FORMS_WEBUTIL=${DC_DOMAIN_BASE}/${DC_DOMAIN_NAME}/config/fmwconfig/components/FORMS/instances/forms1/server
Gestartet wird zunächst wieder einmal die Datenbank-Instanz, die als Repository dienen soll und im Anschluß dann der Weblogic-Server, der zunächst automatisch die Forms/Reports-Domäne erzeugt.
docker-compose -f myfrfmw-docker-compose.yml up -d myfrfmw
docker logs myfrfmw -f
Alles in allem nicht wirklich schwer das Prozedere und mit etwas Transfer-Arbeit verbunden. Natürlich gut und hilfreich, dass Docker den Ex- und Import von Images anbietet; auch plattformübergreifend.
Bis bald
Holger
In diesem Weblog geht es um Erfahrungen mit Oracle Forms, einem 4GL Entwicklungswerkzeug der Firma Oracle für die Programmierung von interaktiven Dialogmasken und Applikationen, angereichert mit SQL, PL/SQL und Java. Neu sein werden bald Berichte zu APEX. Oracle Application Express (APEX) ist eine Low-Code-Entwicklungsplattform für Web-Applikationen. Und alles was dazu noch in den Bereich Programmierung, Docker, Virtualisierung, Agile Entwicklung, Kanban und Scrum fällt. Have fun.
Freitag, 11. Mai 2018
Dienstag, 1. Mai 2018
Form Builder aus Docker auf Windows Host öffnen
Im letzten Post habe ich beschrieben, wie man Forms und Reports per Docker auf einem Linux Host installiert. Dies habe ich mittlerweile auch auf einem Windows Host gemacht, auf dem dann auch Docker installiert ist. Docker läuft momentan nur auf Windows-basierten System mit Windows Server und Windows 10.
Möchte man nun den Form Builder aus diesem Docker Container zum Laufen bringen, ist das nicht ganz so einfach und wird mit einer Fehlermeldung quittiert.
Es ist einfach noch kein X-Window-Server eingerichtet. Dafür habe ich auf dem Windows Host dann den XMing Server installiert, der dafür bestens geeignet ist.
Ebenfalls ist es nötig, dass der X-Server auch benutzt werden darf, sprich das sich Clients auch connecten können. Daher hat mein Windows auf noch eine Cywgin Installation bekommen.
In Cygwin setze ich die DISPLAY Variable wie folgt und gestatte per Xhost den Connect.
Ist dies erledigt, kann es im Docker Container weitergehen. Dort setze ich auch die DISPLAY Variable entsprechend und dann geht der Start des Form Builder auch schon.
Recht einfach, wenn man weiß wie das alles zusammenspielen muß. Anstelle das xhost Befehls kann man das sicher noch optimieren.
Als nächstes folgt hoffentlich bald die Beschreibung der Docker Einrichtung mit Forms/Reports auf Windows.
Bis bald
Holger
Möchte man nun den Form Builder aus diesem Docker Container zum Laufen bringen, ist das nicht ganz so einfach und wird mit einer Fehlermeldung quittiert.
Es ist einfach noch kein X-Window-Server eingerichtet. Dafür habe ich auf dem Windows Host dann den XMing Server installiert, der dafür bestens geeignet ist.
Ebenfalls ist es nötig, dass der X-Server auch benutzt werden darf, sprich das sich Clients auch connecten können. Daher hat mein Windows auf noch eine Cywgin Installation bekommen.
In Cygwin setze ich die DISPLAY Variable wie folgt und gestatte per Xhost den Connect.
Ist dies erledigt, kann es im Docker Container weitergehen. Dort setze ich auch die DISPLAY Variable entsprechend und dann geht der Start des Form Builder auch schon.
Recht einfach, wenn man weiß wie das alles zusammenspielen muß. Anstelle das xhost Befehls kann man das sicher noch optimieren.
Als nächstes folgt hoffentlich bald die Beschreibung der Docker Einrichtung mit Forms/Reports auf Windows.
Bis bald
Holger
Abonnieren
Posts (Atom)