Hi everyone. I’m trying to run a dockerised reference application connected to a postgres database which is hosted in heroku.
The reference application docker setup has been created with the openmrs-sdk (mvn openmrs-sdk:build-distro -e -Ddistro=src/main/resources/openmrs-distro.properties). My openmrs-distro.properties file only contains the modules for the reference application and the basic properties (db.h2.supported=false, name, version and war.openmrs), so it’s a pretty default one which is working fine with the default maria-db that the sdk puts in the docker compose.
I’ve changed the docker compose and the startup.sh files to look like this:
docker-compose.yml
# Generated automatically by openmrs SDK
version: '2'
services:
web:
build: web
image: referenceapplication:latest
environment:
DB_HOST: {the host of the heroku db}
DB_CREATE_TABLES: 'true' # change to 'true' if using an empty database
DB_AUTO_UPDATE: 'true' # change to 'true' if using an empty database
MODULE_WEB_ADMIN: 'true' # allow web admin on OpenMRS
OMRS_CONFIG_CONNECTION_USERNAME: {the user of the heroku db}
OMRS_CONFIG_CONNECTION_PASSWORD: {the password of the heroku db}
OMRS_CONFIG_CONNECTION_TYPE: postgresql
OMRS_CONFIG_CONNECTION_DRIVER_CLASS: org.postgresql.Driver
OMRS_CONFIG_CONNECTION_URL: jdbc:postgres://{the user of the heroku db}:{the password of the heroku db}@{the host of the heroku db}/{the database of the heroku db}?sslmode=require
volumes:
- web-data:/usr/local/tomcat/.OpenMRS
- /usr/local/tomcat/.OpenMRS/modules/ # used to mount persistent docker volume for modules
- /usr/local/tomcat/.OpenMRS/owa/ # used to mount persistent docker volume for owa
volumes:
web-data:
startup.sh
...
cat > /usr/local/tomcat/openmrs-server.properties << EOF
install_method=auto
connection.url=${OMRS_CONFIG_CONNECTION_URL}
connection.username=${OMRS_CONFIG_CONNECTION_USERNAME}
connection.password=${OMRS_CONFIG_CONNECTION_PASSWORD}
connection.driver_class=${OMRS_CONFIG_CONNECTION_DRIVER_CLASS}
has_current_openmrs_database=true
create_database_user=false
module_web_admin=${MODULE_WEB_ADMIN}
create_tables=${DB_CREATE_TABLES}
auto_update_database=${DB_AUTO_UPDATE}
EOF
...
/usr/local/tomcat/wait-for-it.sh --timeout=3600 ${DB_HOST}:5432
...
You can see I’ve basically changed the environment variables related to the database and the port when calling the wait-for-it.sh script. I’ve also removed the database part in the docker-compose.override.yml file.
The error I’m getting is driver not found, here are the logs of the container:
11-Aug-2022 07:42:49.022 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version name: Apache Tomcat/8.5.81
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built: Jun 8 2022 21:30:15 UTC
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version number: 8.5.81.0
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name: Linux
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version: 5.10.109-0-virt
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture: amd64
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home: /opt/java/openjdk
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version: 1.8.0_342-b07
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor: Temurin
11-Aug-2022 07:42:49.029 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE: /usr/local/tomcat
11-Aug-2022 07:42:49.030 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME: /usr/local/tomcat
11-Aug-2022 07:42:49.030 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties
11-Aug-2022 07:42:49.030 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
11-Aug-2022 07:42:49.030 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dfile.encoding=UTF-8
11-Aug-2022 07:42:49.030 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xms256m
11-Aug-2022 07:42:49.031 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx768m
11-Aug-2022 07:42:49.031 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:PermSize=256m
11-Aug-2022 07:42:49.031 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -XX:MaxPermSize=512m
11-Aug-2022 07:42:49.031 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048
11-Aug-2022 07:42:49.031 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.protocol.handler.pkgs=org.apache.catalina.webresources
11-Aug-2022 07:42:49.031 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dorg.apache.catalina.security.SecurityListener.UMASK=0027
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -agentlib:jdwp=transport=dt_socket,address=1044,server=y,suspend=n
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DOPENMRS_INSTALLATION_SCRIPT=/usr/local/tomcat/openmrs-server.properties
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -DOPENMRS_APPLICATION_DATA_DIRECTORY=/usr/local/tomcat/.OpenMRS
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dignore.endorsed.dirs=
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded Apache Tomcat Native library [1.2.33] using APR version [1.7.0].
11-Aug-2022 07:42:49.032 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true], UDS [{4}].
11-Aug-2022 07:42:49.033 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR/OpenSSL configuration: useAprConnector [false], useOpenSSL [true]
11-Aug-2022 07:42:49.038 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized [OpenSSL 3.0.2 15 Mar 2022]
11-Aug-2022 07:42:49.203 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
11-Aug-2022 07:42:49.236 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1132 ms
11-Aug-2022 07:42:49.314 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
11-Aug-2022 07:42:49.314 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/8.5.81]
11-Aug-2022 07:42:49.374 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [/usr/local/tomcat/webapps/openmrs.war]
11-Aug-2022 07:42:49.394 WARNING [localhost-startStop-1] org.apache.catalina.startup.SetContextPropertiesRule.begin [SetContextPropertiesRule]{Context} Setting property 'antiJARLocking' to 'true' did not find a matching property.
11-Aug-2022 07:42:53.640 INFO [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
07:42:54.367 [localhost-startStop-1] ERROR org.openmrs.api.context.Context - serviceContext is null. Creating new ServiceContext()
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2033) |2022-08-11T07:42:54,597| Unable to find a runtime properties file at /usr/local/tomcat/openmrs-runtime.properties
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2033) |2022-08-11T07:42:54,620| Unable to find a runtime properties file at /usr/local/tomcat/openmrs-runtime.properties
INFO - Listener.contextInitialized(185) |2022-08-11T07:42:54,620| Using runtime properties file: /usr/local/tomcat/.OpenMRS/openmrs-runtime.properties
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2033) |2022-08-11T07:42:54,626| Unable to find a runtime properties file at /usr/local/tomcat/openmrs-runtime.properties
INFO - ChangeLogDetective.getInitialLiquibaseSnapshotVersion(69) |2022-08-11T07:42:54,788| identifying the Liquibase snapshot version that had been used to initialize the OpenMRS database...
INFO - ChangeLogDetective.getInitialLiquibaseSnapshotVersion(82) |2022-08-11T07:42:54,793| looking for un-run change sets in snapshot version '2.5.x'
ERROR - UpdateFilterModel.updateChanges(100) |2022-08-11T07:42:54,800| Unable to get the database changes
java.lang.Exception: Unable to get a connection to the database. Please check your openmrs runtime properties file and make sure you have the correct connection.username and connection.password set
at org.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:402) ~[openmrs-api-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:382) ~[openmrs-api-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.util.DatabaseUpdaterLiquibaseProvider.getLiquibase(DatabaseUpdaterLiquibaseProvider.java:25) ~[openmrs-api-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.liquibase.ChangeLogDetective.getInitialLiquibaseSnapshotVersion(ChangeLogDetective.java:88) ~[openmrs-api-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.util.DatabaseUpdater.getUnrunDatabaseChanges(DatabaseUpdater.java:638) ~[openmrs-api-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.web.filter.update.DatabaseUpdaterWrapper.getUnrunDatabaseChanges(DatabaseUpdaterWrapper.java:18) ~[openmrs-web-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.web.filter.update.UpdateFilterModel.updateChanges(UpdateFilterModel.java:92) ~[openmrs-web-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.web.filter.update.UpdateFilterModel.<init>(UpdateFilterModel.java:71) ~[openmrs-web-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.web.filter.update.UpdateFilterModel.<init>(UpdateFilterModel.java:57) ~[openmrs-web-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.web.filter.update.UpdateFilter.init(UpdateFilter.java:496) ~[openmrs-web-2.6.0-SNAPSHOT.jar:?]
at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:281) ~[catalina.jar:8.5.81]
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:262) ~[catalina.jar:8.5.81]
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:105) ~[catalina.jar:8.5.81]
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4608) ~[catalina.jar:8.5.81]
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5258) ~[catalina.jar:8.5.81]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ~[catalina.jar:8.5.81]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753) ~[catalina.jar:8.5.81]
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:727) ~[catalina.jar:8.5.81]
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:695) ~[catalina.jar:8.5.81]
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1016) ~[catalina.jar:8.5.81]
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1903) ~[catalina.jar:8.5.81]
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_342]
at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_342]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) ~[?:1.8.0_342]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) ~[?:1.8.0_342]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_342]
Caused by: java.sql.SQLException: No suitable driver found for {the value of the connection.url}
at java.sql.DriverManager.getConnection(DriverManager.java:689) ~[?:1.8.0_342]
at java.sql.DriverManager.getConnection(DriverManager.java:247) ~[?:1.8.0_342]
at org.openmrs.util.DatabaseUpdater.getConnection(DatabaseUpdater.java:461) ~[openmrs-api-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.util.DatabaseUpdater.getLiquibase(DatabaseUpdater.java:399) ~[openmrs-api-2.6.0-SNAPSHOT.jar:?]
... 25 more
INFO - ChangeLogDetective.getInitialLiquibaseSnapshotVersion(69) |2022-08-11T07:42:54,809| identifying the Liquibase snapshot version that had been used to initialize the OpenMRS database...
INFO - ChangeLogDetective.getInitialLiquibaseSnapshotVersion(82) |2022-08-11T07:42:54,809| looking for un-run change sets in snapshot version '2.5.x'
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2033) |2022-08-11T07:42:55,030| Unable to find a runtime properties file at /usr/local/tomcat/openmrs-runtime.properties
11-Aug-2022 07:42:55.052 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [/usr/local/tomcat/webapps/openmrs.war] has finished in [5,677] ms
11-Aug-2022 07:42:55.066 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
11-Aug-2022 07:42:55.101 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 5864 ms
+ curl -L http://localhost:8080/openmrs/
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
WARN - OpenmrsUtil.getRuntimePropertiesFilePathName(2033) |2022-08-11T07:43:03,134| Unable to find a runtime properties file at /usr/local/tomcat/openmrs-runtime.properties
WARN - InitializationFilter.verifyConnection(987) |2022-08-11T07:43:03,143| Error while checking the connection user account
java.sql.SQLException: No suitable driver found for {the value of the connection.url}
at java.sql.DriverManager.getConnection(DriverManager.java:689) ~[?:1.8.0_342]
at java.sql.DriverManager.getConnection(DriverManager.java:247) ~[?:1.8.0_342]
at org.openmrs.web.filter.initialization.InitializationFilter.verifyConnection(InitializationFilter.java:977) ~[openmrs-web-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.web.filter.initialization.InitializationFilter.access$400(InitializationFilter.java:80) ~[openmrs-web-2.6.0-SNAPSHOT.jar:?]
at org.openmrs.web.filter.initialization.InitializationFilter$InitializationCompletion$1.run(InitializationFilter.java:1495) ~[openmrs-web-2.6.0-SNAPSHOT.jar:?]
at java.lang.Thread.run(Thread.java:750) ~[?:1.8.0_342]
100 12464 0 12464 0 0 15102 0 --:--:-- --:--:-- --:--:-- 0
+ sleep 15
+ wait 18
Thanks a lot!