If you are building your own container, then you should configure them on the container then create the image. I liked helm charts because you don't need to build your own image, and it will download it from webMethods repo directly and you can also get the most up to date fixes just by updating the container image in the helm chart, or with a parameter during cluster startup. If you don't follow this path, it might get extremely annoying and troublesome depending on your docker skills.
If you are not running MSR on kub8, it should persist any changes you make through Admin UI as long as you don't delete the persistent storage location. As a rule of thumb, I never customize unless I have to! Most of the changes you are doing to your container image are unnecessary. Check the persistent storage configurations. By default it should create them for you.
If you are running MSR on kub8, give helm charts a chance to do it for you. I know yaml can be annoying and challenging, but if you keep committing frequently whenever you have a working version, its pretty easy. Helm charts will configure all of your containers, MSR, MWS, UM, Api GW and so on.
FYI, its pretty straightforward in helm charts. This is where you place your configuration parameters.

And here is the link to the sample where it has a configured parameters for JDBC. When you build your own configuration template, you need to build it properly, meaning it should have the pool alias definition and then you need to map it to your functions. You might have a typo or syntax error in that file. Try downloading the sample from git, and then modify it.
------------------------------
engin sarlak
------------------------------
Original Message:
Sent: Thu June 26, 2025 12:50 PM
From: Abhijith Parre
Subject: How to start MSR with external JDBC pools as the MSR image containers.webmethods.io will come with plain vanilla image with emdeded db
Hi engin
Yes i have used the configuration template and gave this
jdbc.ISInternalPool.dbURL=jdbc\:wm\:postgresql\://localhost\:5432;databaseName\=IS_1015
jdbc.ISInternalPool.userid=postgres
jdbc.ISInternalPool.password=*****
jdbc.ISInternalPool.minConns=0
jdbc.ISInternalPool.maxConns=10
jdbc.ISInternalPool.poolThreshold=80
jdbc.ISInternalPool.waitingThread=5
jdbcfunc.ISInternal.connPoolAlias=ISInternalPool
my dockerfile has this content
FROM SAGIMage:10.15
#RUN yum install -y wget && yum clean all
#RUN yum install -y procps && yum clean all
#RUN groupadd -g 1724 sagadmin; useradd -u 1724 -m -g 1724 -d ${SAG_HOME} sagadmin
#COPY --chown=1724:1724 ./Licenses/ ${SAG_HOME}/Licenses/
COPY --chown=sagadmin:root postgresql-42.7.3.jar /opt/softwareag/IntegrationServer/lib/jars
COPY --chown=sagadmin:root application.properties /opt/softwareag/IntegrationServer/application.properties
USER sagadmin
while running docker i am giving it as
docker run -d --name msrcontainer -p 8765:5555 -v C:\Users\AbhijithP\Desktop\application.properties:/opt/data/application.properties -e SAG_IS_CONFIG_PROPERTIES=/opt/data/application.properties SAGImage:10.15
Even after this i see jar is not copied nor the external db is configured in the JDBC pools.
I want to know how in MSR the scheduler information is stored because in Embedded DB the data doesnt get stored anyway
------------------------------
Abhijith Parre
Original Message:
Sent: Thu June 26, 2025 12:22 PM
From: engin sarlak
Subject: How to start MSR with external JDBC pools as the MSR image containers.webmethods.io will come with plain vanilla image with emdeded db
I recommend using configuration variables and Helm charts. Imo creating your own container for this purpose is an overkill. Here is the helm repo.
You can find the samples within the product you are planning to use.

To your other question, you don't need to run DBconfigurator from the server. You can install it anywhere (including your local) and run it from that location.
------------------------------
engin sarlak
Original Message:
Sent: Thu June 26, 2025 07:25 AM
From: Abhijith Parre
Subject: How to start MSR with external JDBC pools as the MSR image containers.webmethods.io will come with plain vanilla image with emdeded db
Hi All,
I am trying to run webMethods Microservices Runtime (MSR) using the image from containers.webmethods.io, which by default spins up with an embedded database.
As expected, when I create schedulers, they are successfully created during runtime. However, upon container restart, the scheduler information disappears-this aligns with the default behavior since scheduler metadata is stored in the database.
Now, I would like to configure MSR to use an external database instead, so that all JDBC pools are preloaded and persisted across restarts.
Could someone guide me on:
-
How to run the Database Configurator against the image from containers.webmethods.io
?
-
How to configure the container to connect to and use the external database for core functionality (e.g., scheduler persistence, JDBC pools)?
- when i add application.properties file in the Dockerfile i see the file is getting loaded as root user instead of sagadmin:root even after specifying below content
- From ibmimage:10.15
ENV SAG_HOME /opt/softwareag
ENV LANG C.utf8
COPY --chown=sagadmin:root application.properties ${SAG_HOME}/IntegrationServer/application.properties
USER sagadmin
Appreciate your support.

Regards,
Abhijith
------------------------------
Abhijith Parre
------------------------------