Building Web Application Platform documentation container
Web Application Platform provides a user-facing UI and an authentication entry point.
Downloading Web Application Platform software
To download the Web Application Platform software
- Download the Web_Application_Platform_<version>_war_files.zip file from https://software.3ds.com. See 3DS Media list.
- Copy Web_Application_Platform_<version>_files.zip to /twc on the server and copy all the files from WebAppPlatform using below command.Unzip Web_Application_Platform_<version>_war_files.zip, and copy all or required war files to webapps folder
cp -r CATIANoMagicServices/WebAppPlatform webapp/WebAppPlatformSHELLcp -r *.war webapp/WebAppPlatform/webappsSHELL
Building Web Application Platform image
- Create the following files:
webapp/Dockerfile
# Use JDK 21 on UBI9-minimal for a modern, secure, and small base image FROM eclipse-temurin:21-jdk-ubi9-minimal # Install tools with microdnf and clean cache (available in ubi9-minimal) RUN microdnf install -y \ sudo \ wget \ nc \ net-tools\ && microdnf clean all RUN mkdir -p /Certs ARG TOMCAT_DIR=/webapp ARG SET_ENV_FILE=${TOMCAT_DIR}/bin/setenv.sh # Copy scripts and web application platform COPY docker.scripts /scripts COPY WebAppPlatform /webapp # Set environment variables and permissions RUN echo 'export JAVA_OPTS="$JAVA_OPTS ${WEBAPP_PROPERTIES}"' >> ${SET_ENV_FILE} && \ chmod o+x ${SET_ENV_FILE} WORKDIR /webapp EXPOSE 8443 8080 CMD ["sh", "/scripts/run.sh"]SHELLwebapp/docker-compose.yml
version: '2.4' services: webapp: image: localhost/twc_webapp:latest container_name: webapp build: context: . dockerfile: Dockerfile ports: - "8080:8080" - "8443:8443" environment: ZOOKEEPER_HOST: zookeeper CASSANDRA_HOST: cassandra TWC_HOST: twcloud MESSAGING_EXTERNAL: "true" MESSAGING_HOST: messaging MESSAGING_PORT: "61616" MESSAGING_SECURITY_ENABLED: "true" MESSAGING_SECURITY_USERNAME: artemis MESSAGING_SECURITY_PASSWORD: artemis WEBAPP_PROPERTIES: >- -Dmessaging.server.security.enabled=true -Dmessaging.user.name=artemis -Dmessaging.user.password=artemis volumes: - ../data/certs:/webapp/certs - ../data/webapp/logs:/webapp/logs networks: - twc-net healthcheck: test: ["CMD", "nc", "-z", "-w2", "localhost", "8443"] interval: 10s timeout: 5s retries: 30 networks: twc-net: external: trueSHELLwebapp/docker.scripts/run.sh
Change "CHANGE_TO_SERVER_FQDN" to your hostname.#!/bin/bash echo "ZOOKEEPER_HOST=${ZOOKEEPER_HOST}" echo "CASSANDRA_HOST=${CASSANDRA_HOST}" echo "TWC_HOST=${TWC_HOST}" echo "MESSAGING_EXTERNAL=${MESSAGING_EXTERNAL}" echo "MESSAGING_HOST=${MESSAGING_HOST}" echo "MESSAGING_PORT=${MESSAGING_PORT}" echo "REDIRECT_WHITELIST=${REDIRECT_WHITELIST}" echo "JAVA_HOME=${JAVA_HOME}" # debug pwd if [ -n "${REDIRECT_WHITELIST}" ]; then sed -i "s|^authentication.redirect.uri.whitelist=.*$|authentication.redirect.uri.whitelist=${REDIRECT_WHITELIST}|" shared/conf/authserver.properties fi if [ -n "${CASSANDRA_HOST}" ]; then sed -i "s|^cassandra.contactPoints=.*$|cassandra.contactPoints=${CASSANDRA_HOST}|" shared/conf/authserver.properties fi sed -i "s|^#authentication.client.ids=.*$|authentication.client.ids=MAGICDRAW,webApplicationPlatform,twcSynchronizationManager,twc-rest-api|" shared/conf/authserver.properties if [ -n "${TWC_HOST}" ]; then sed -i "s|^twc.ip=.*$|twc.ip=${TWC_HOST}|" shared/conf/webappplatform.properties fi if [ -n "${ZOOKEEPER_HOST}" ]; then sed -i "s|^zookeeper.server.ip=.*$|zookeeper.server.ip=${ZOOKEEPER_HOST}|" shared/conf/webappplatform.properties fi if [ -n "${MESSAGING_EXTERNAL}" ]; then if [ "${MESSAGING_EXTERNAL}" = true ]; then sed -i "s|^messaging.server.start=.*$|messaging.server.start=false|" shared/conf/webappplatform.properties sed -i "s|^messaging.server.ip=.*$|messaging.server.ip=${MESSAGING_HOST}|" shared/conf/webappplatform.properties sed -i "s|^messaging.server.port=.*$|messaging.server.port=${MESSAGING_PORT}|" shared/conf/webappplatform.properties else sed -i "s|^messaging.server.start=.*$|messaging.server.start=true|" shared/conf/webappplatform.properties sed -i "s|^messaging.server.ip=.*$|messaging.server.ip=127.0.0.1|" shared/conf/webappplatform.properties fi fi if [ -n "${MESSAGING_SECURITY_ENABLED}" ]; then if [ "${MESSAGING_SECURITY_ENABLED}" = true ]; then sed -i "s|.*messaging.server.security.enabled=.*$|messaging.server.security.enabled=true|" shared/conf/webappplatform.properties sed -i "s|.*messaging.user.name=.*$|messaging.user.name=${MESSAGING_SECURITY_USERNAME}|" shared/conf/webappplatform.properties sed -i "s|.*messaging.user.password=.*$|messaging.user.password=${MESSAGING_SECURITY_PASSWORD}|" shared/conf/webappplatform.properties else sed -i "s|.*messaging.server.security.enabled=.*$|messaging.server.security.enabled=false|" shared/conf/webappplatform.properties fi fi ln -sf /webapp/certs/webapp.p12 /Certs/keystore.p12 # TODO need to pass external IP/HOSTNAME sed -i "s|^authentication.server.ip=.*$|authentication.server.ip=CHANGE_TO_SERVER_FQDN|" shared/conf/webappplatform.properties echo "" >> shared/conf/webappplatform.properties echo "ignore.wap.twc.compatibility=true" >> shared/conf/webappplatform.properties sed -i "s|^authentication.server.key-store=.*$|authentication.server.key-store=certs/webapp.p12|" shared/conf/authserver.properties sed -i "s|^authentication.server.key-alias=.*$|authentication.server.key-alias=webapp|" shared/conf/authserver.properties sed -i 's|certificateKeystoreFile="../TeamworkCloud/configuration/keystore.p12"|certificateKeystoreFile="certs/webapp.p12"|' conf/server.xml #debug mkdir -p logs/bak cp shared/conf/authserver.properties logs/bak/authserver.properties cp shared/conf/webappplatform.properties logs/bak/webappplatform.properties cp conf/server.xml logs/bak/server.xml echo ----------------------------------------------------------- #bash ./bin/catalina.sh run >> logs/output.log 2>&1 # In your run.sh exec bash ./bin/catalina.sh run 2>&1 | tee -a logs/output.logSHELL
- Build the image by running the following command:
cd /webapp docker compose build --no-cache webappSHELL - Run a health check by executing the following command to check if Cassandra is operational:
docker exec webapp nc -zv localhost 8443SHELL - Verify status:
docker ps -aSHELLAll services should be in Up (healthy) state.