|
| 1 | +--- |
| 2 | +title: "Launch Oracle Webcenter Content Native Applications in Containers deployed in Oracle Cloud Infrastructure" |
| 3 | +date: 2020-12-3T07:32:31-05:00 |
| 4 | +weight: 7 |
| 5 | +pre : "<b>7. </b>" |
| 6 | +description: "How to launch Oracle WebCenter Content native binaries from inside containerized environment in OCI." |
| 7 | +--- |
| 8 | + |
| 9 | +This section provides the steps required to use Oracle WebCenter Content native binaries with user interfaces, from containerized Managed Servers deployed in OCI. |
| 10 | + |
| 11 | +### Issue with Launching Headful User Interfaces for Oracle WebCenter Content Native Binaries |
| 12 | + |
| 13 | +Oracle WebCenter Content (UCM) provide a set of native binaries with headful UIs, which are delivered as part of the product container image. |
| 14 | +WebCenter Content container images are, by default, created with Oracle slim linux image, which doesn't come with all the packages pre-installed to support headful applications with UIs to be launched. UCM provides many such native binaries which uses JAVA AWT for UI support. |
| 15 | +With current Oracle WebCenter Content container images, native applications fails to run, being unable to launch UIs. |
| 16 | + |
| 17 | +The following sections document the solution, by providing a set of instructions, enabling users to run UCM native applications with UIs. |
| 18 | + |
| 19 | + |
| 20 | +These instructions are divided in two parts - |
| 21 | +1. [Steps to update the existing container image](#steps-to-update-out-of-the-box-oracle-webcenter-content-container-image-using-weblogic-image-tool) |
| 22 | +1. [Steps to launch native apps using VNC sessions](#steps-to-launch-oracle-webcenter-content-native-applications-using-vnc-sessions) |
| 23 | + |
| 24 | + |
| 25 | +### Steps to Update out-of-the-box Oracle WebCenter Content Container Image Using WebLogic Image Tool |
| 26 | + |
| 27 | +This section describes the method to update image with a OS package using WebLogic Image Tool. Please refer [this](https://oracle.github.io/weblogic-image-tool/) for setting up the WebLogic Image Tool. |
| 28 | +#### Additional Build Commands |
| 29 | + |
| 30 | +The installation of required OS packages in the image, can be done using yum command in additional build command option available in WebLogic Image Tool. Here is the sample `additionalBuildCmds.txt` file, to be used, to install required Linux packages (libXext.x86_64, libXrender.x86_64 and libXtst.x86_64). |
| 31 | + |
| 32 | +``` |
| 33 | +[final-build-commands] |
| 34 | +USER root |
| 35 | +RUN yum -y --downloaddir=/tmp/imagetool install libXext libXrender libXtst \ |
| 36 | + && yum -y --downloaddir=/tmp/imagetool clean all \ |
| 37 | + && rm -rf /var/cache/yum/* \ |
| 38 | + && rm -rf /tmp/imagetool |
| 39 | +USER oracle |
| 40 | +
|
| 41 | +``` |
| 42 | + |
| 43 | +>Note: It is important to change the user to `oracle`, otherwise the user during the container execution will be `root`. |
| 44 | +#### Build arguments |
| 45 | + |
| 46 | +The arguments required for updating the image can be passed as file to the WebLogic Image Tool. |
| 47 | + |
| 48 | + 'update' is the sub command to Image Tool for updating an existing docker image. |
| 49 | + '--fromImage' option provides the existing docker image that has to be updated. |
| 50 | + '--tag' option should be provided with the new tag for the updated image. |
| 51 | + '--additionalBuildCommands' option should be provided with the above created additional build commands file. |
| 52 | + '--chown oracle:root' option should be provided to update file permissions. |
| 53 | + |
| 54 | +Below is a sample build argument (buildArgs) file, to be used for updating the image, |
| 55 | + |
| 56 | + |
| 57 | +``` |
| 58 | + update |
| 59 | + --fromImage <existing_WCContent_image_without_dependent_packages> |
| 60 | + --tag <name_of_updated_WCContent_image_to_be_built> |
| 61 | + --additionalBuildCommands ./additionalBuildCmds.txt |
| 62 | + --chown oracle:root |
| 63 | +``` |
| 64 | + |
| 65 | +#### Update Oracle WebCenter Content Container Image |
| 66 | + |
| 67 | +Now we can execute the WebLogic Image Tool to update the out-of-the-box image, using the build-argument file described above - |
| 68 | + |
| 69 | +``` |
| 70 | +$ imagetool @buildArgs |
| 71 | +``` |
| 72 | + |
| 73 | + |
| 74 | +WebLogic Image Tool provides multiple options for updating the image. For detailed information on the update options, please refer to [this](https://oracle.github.io/weblogic-image-tool/userguide/tools/update-image/) document. |
| 75 | + |
| 76 | +Updating the image does not modify the 'CMD' from the source image unless it is modified in the additional build commands. |
| 77 | + |
| 78 | +``` |
| 79 | +$ docker inspect -f '{{.Config.Cmd}}' <name_of_updated_Wccontent_image> |
| 80 | +[/u01/oracle/container-scripts/createDomainandStartAdmin.sh] |
| 81 | +``` |
| 82 | + |
| 83 | +### Steps to launch Oracle WebCenter Content native applications using VNC sessions. |
| 84 | + |
| 85 | +Once updated image is successfully built and available on all required nodes, do the following: |
| 86 | + |
| 87 | +a. Update the domain.yaml file with updated image name and apply the domain.yaml file. |
| 88 | +``` |
| 89 | +$ kubectl apply -f domain.yaml |
| 90 | +``` |
| 91 | + |
| 92 | +b. After applying the modified domain.yaml, pods will get restarted and start running with updated image with required packages. |
| 93 | + |
| 94 | +``` |
| 95 | +$ kubectl get pods -n <namespace_being_used_for_wccontent_domain> |
| 96 | +``` |
| 97 | +c. Install VNC SERVER on any one worker node, on which there is an UCM server pod deployed. |
| 98 | + |
| 99 | +d. After starting vncserver systemctl daemon in the Worker Node, execute the following command from Bastion Host to the Private Subnet Instance (Worker Node). |
| 100 | + |
| 101 | +``` |
| 102 | +# The default VNC port is 5900, but that number is incremented according to the configured display number. Thus, display 1 corresponds to 5901, display 2 to 5902, and so on. |
| 103 | +$ ssh -i <Workernode_private.key> -L 590<display_number>:localhost:590<display_number> -p 22 -L 590<display number>:localhost:590<display number> -N -f <user>@<Workernode_privateIPAddress> |
| 104 | +
|
| 105 | +# Sample command |
| 106 | +$ ssh -i <Workernode_private.key> -L 5901:localhost:5901 -p 22 -L 5901:localhost:5901 -N -f opc@10.0.10.xx |
| 107 | +``` |
| 108 | + |
| 109 | +e. From personal client execute the below command with the above session opened. |
| 110 | + |
| 111 | +``` |
| 112 | +# Use any Linux emulator (like, Windows Power Shell for Windows) to run the following command |
| 113 | +$ ssh -i <Bastionnode_private.key> -L 590<display_number>:localhost:590<display_number> -p 22 -L 590<display_number>:localhost:590<display_number> -N -f <user>@<BastionHost_publicIPAddress> |
| 114 | +
|
| 115 | +# Sample command |
| 116 | +$ ssh -i <Bastionnode_private.key> -L 5901:localhost:5901 -p 22 -L 5901:localhost:5901 -N -f opc@129.xxx.249.xxx |
| 117 | +``` |
| 118 | + |
| 119 | +f. Open VNC Client software in personal client and connect to Worker Node VNC Server using `localhost:590<display_number>`. |
| 120 | + |
| 121 | +g. Open a terminal once the VNC session to the Worker Node is connected - |
| 122 | + |
| 123 | +``` |
| 124 | +$ xhost + |
| 125 | +``` |
| 126 | +h. Run the following commands from Bastion Host terminal – |
| 127 | + |
| 128 | +``` |
| 129 | +# Get into the pod's (for example, wccinfra-ucm-server1) shell: |
| 130 | +$ kubectl exec -n wccns -it wccinfra-ucm-server1 -- /bin/bash |
| 131 | +
|
| 132 | +# Traverse to the Native Binaries' location |
| 133 | +$ cd /u01/oracle/user_projects/domains/wccinfra/ucm/cs/bin |
| 134 | +
|
| 135 | +# Set DISPLAY variable within the container |
| 136 | +$ export DISPLAY=<Workernode_privateIPAddress, where VNC session was created>:<dispay_number> |
| 137 | +# Sample command |
| 138 | +$ export DISPLAY=10.0.10.xx:1 |
| 139 | +
|
| 140 | +# Launch any native UCM application, from within the container, like this: |
| 141 | +$ ./SystemProperties |
| 142 | +``` |
| 143 | +i. If the application has an UI, it'll get launched now in the VNC session connected from personal client. |
| 144 | + |
| 145 | + |
0 commit comments