The EBX® Container Edition image can be used as a parent image to create a customized image.
Setting default EBX® configuration should not be based on /opt/ebx/conf/ebx-container.properties as this file may be overridden at runtime.
Instead, proceed as following in the Docker file:
Rename file /opt/ebx/webapps/ebx/WEB-INF/ebx-default.properties, for example to ebx-default-original.properties.
Create a new file /opt/ebx/webapps/ebx/WEB-INF/ebx-default.properties container new property values. This file must define property ebx.file.previous set to the original property file new name, for example ebx-default-original.properties.
For the list of properties supported by EBX® see chapter TIBCO EBX® main configuration file.
Here is a sample Docker file that set the locale to "en-US"
FROM ebx:6.0.10 RUN mv /opt/ebx/webapps/ebx/WEB-INF/ebx-default.properties \ /opt/ebx/webapps/ebx/WEB-INF/ebx-default-original.properties RUN echo "ebx.file.previous=ebx-default-original.properties" >> \ /opt/ebx/webapps/ebx/WEB-INF/ebx-default.properties RUN echo "ebx.locales.available=en-US" >> /opt/ebx/webapps/ebx/WEB-INF/ebx-default.properties
One can extend EBX® by developing custom modules. An EBX® module is a standard Java EE web application, packaging various resources such as XML Schema documents, Java classes and static resources.
For more information on EBX® module see chapter Packaging TIBCO EBX® modules.
With EBX® Container Edition, it is recommended to deploy modules as "unpacked" (exploded) WARs. This allows a faster startup and avoids unnecessarily increasing container size because Tomcat will not need to unpack WAR files.
The recommended way to add a module to an image is to:
Copy the WAR to folder /opt/ebx/webapps. As stated previously, exploded format is recommended.
Create an associated Tomcat context XML file named module_war_name.xml and copy it to folder /opt/ebx/contexts.
Optionally, copy shared JARs to folder /opt/ebx/lib.
The Tomcat context XML file should have the following content:
<?xml version="1.0" encoding="UTF-8"?> <Context docBase="${ebx.container.base}/webapps/module_war_name"/>
Using variable ${ebx.container.base} is required for correct support of environment variable EBX_ROOT_PATH.
For more information on Tomcat contexts see https://tomcat.apache.org/tomcat-9.0-doc/config/context.html#Defining_a_context.
Here is a sample Docker file:
FROM ebx:6.0.10 COPY "./module_name.xml" "/opt/ebx/contexts" COPY "./module_name" "/opt/ebx/webapps"
To add a new local you must have the jar file containing the language pack and add the locale to the ebx configuration.
Here is a sample Docker file
FROM ebx:6.0.10 COPY "<path_to_lib>" "/opt/ebx/lib" RUN mv "/opt/ebx/webapps/ebx/WEB-INF/ebx-default.properties" \ "/opt/ebx/webapps/ebx/WEB-INF/ebx-default-original.properties" RUN echo "ebx.file.previous=ebx-default-original.properties" >> \ "/opt/ebx/webapps/ebx/WEB-INF/ebx-default.properties" RUN echo "ebx.locales.available=es" >> "/opt/ebx/webapps/ebx/WEB-INF/ebx-default.properties"
In this example, the lib is copied and the locale is set to "es" using the method described in the "setting default configuration" section
Adding a new JDBC driver is similar to adding a new library. You simply have to copy the jar file in the "/opt/ebx/lib" folder with the correct permission. Here is an example with the Oracle JDBC driver :
FROM ebx:6.0.10 ADD \ https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc11/21.3.0.0/ojdbc11-21.3.0.0.jar \ "/opt/ebx/lib/" RUN chmod +r "/opt/ebx/lib/ojdbc11-21.3.0.0.jar"
See Database drivers for more information.