Page 1 of 1

Error connecting with database after using docker-compose file

PostPosted:Mon Jun 26, 2023 11:10 am
by LoveJoy
Hello, I tried creating a docker-compose file, and added server.xml and OpenKM.cfg file, but its producing a database connection error.
javax.servlet.ServletException: com.openkm.core.DatabaseException: Cannot open connection
Date: Mon Jun 26 00:59:53 UTC 2023



Docker-compose.yml file:
Code: Select all

version: '3.3'


services:

  openkm:
    image: openkm/openkm-ce:latest
    volumes:
      - ./openkm/server.xml:/opt/tomcat/conf/server.xml
      - ./openkm/OpenKM.cfg:/opt/tomcat/OpenKM.cfg
      - ./volumes/files/repository:/opt/tomcat/repository
    depends_on:
      - openkm_db
    links:
      - openkm_db
    ports:
      - 8080:8080

  openkm_db:
    image: mysql:latest
    environment:
      - MYSQL_ROOT_PASSWORD=openkm
      - MYSQL_USER=openkm
      - MYSQL_ROOT_USER=openkm
      - MYSQL_DATABASE=okmdb
    volumes:
      - openkm_volume:/var/lib/mysql
    ports:
      - 3306:3306

volumes:
  openkm_volume:


server.xml file
Code: Select all
<?xml version='1.0' encoding='utf-8'?>
<Server port="8005" shutdown="SHUTDOWN">
  <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
  <!--APR library loader. Documentation at /docs/apr.html -->
  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
  <!-- Prevent memory leaks due to use of particular java/javax APIs-->
  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
  <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />

  <!-- Global JNDI resources -->
  <GlobalNamingResources>
    <!-- Editable user database that can also be used by
         UserDatabaseRealm to authenticate users
    -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
              description="User database that can be updated and saved"
              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
              pathname="conf/tomcat-users.xml" />

    <Resource name="jdbc/OpenKMDS" auth="Container" type="javax.sql.DataSource"
            maxTotal="100" maxIdle="30" maxWaitMillis="10000" validationQuery="select 1"
            username="openkm" password="openkm" driverClassName="com.mysql.cj.jdbc.Driver"
            url="jdbc:mysql://mysql:3306/okmdb?useSSL=false&amp;autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF8&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/>

    <Resource name="mail/OpenKM" auth="Container" type="javax.mail.Session"
              mail.smtp.host="localhost" mail.from="noreply@openkm.com"/>

  </GlobalNamingResources>

  <!-- A "Service" is a collection of one or more "Connectors" that share
       a single "Container" Note:  A "Service" is not itself a "Container",
       so you may not define subcomponents such as "Valves" at this level.
       Documentation at /docs/config/service.html
   -->
  <Service name="Catalina">
    <Connector port="8080" address="0.0.0.0" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    <!-- Define an AJP 1.3 Connector on port 8009 -->
    <Connector port="8009" address="127.0.0.1" protocol="AJP/1.3" redirectPort="8443" />

    <Engine name="Catalina" defaultHost="localhost">
      <!-- Use the LockOutRealm to prevent attempts to guess user passwords via a brute-force attack -->
      <Realm className="org.apache.catalina.realm.LockOutRealm">
        <!-- This Realm uses the UserDatabase configured in the global JNDI
             resources under the key "UserDatabase".  Any edits
             that are performed against this UserDatabase are immediately
             available for use by the Realm.  -->
        <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
               resourceName="UserDatabase"/>
      </Realm>

      <Host name="localhost"  appBase="webapps" unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log" suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

        <!-- External resources -->
        <!-- <Context docBase="${catalina.home}/custom" path="/OpenKM/custom" reloadable="true"/> -->
      </Host>
    </Engine>
  </Service>
</Server>
openkm.cfg file:
Code: Select all
# OpenKM Hibernate configuration values
hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
hibernate.hbm2ddl=none

# Logback configuration file
logback.config=logback.xml


Re: Error connecting with database after using docker-compose file

PostPosted:Wed Jul 05, 2023 11:09 am
by LoveJoy
Please assist me.

Re: Error connecting with database after using docker-compose file

PostPosted:Wed Aug 02, 2023 8:54 am
by pavila
I think the JDBC URL should be:
Code: Select all
jdbc:mysql://openkm_db:3306/okmdb?useSSL=false&autoReconnect=true&useUnicode=true&characterEncoding=UTF8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC