2016-07-14 5 views
0

moqui와 mantle을 도커 환경에 배포 했으므로 도커 작성기를 사용하여 두 개의 도커 Comainter, Tomcat 및 mariadb를 설정하고 함께 연결합니다.Tomcat 및 mariadb를 사용하여 도커에 데이터를 처음으로로드 할 때 오류가 발생합니다.

데이터 소스의 conf는

<entity-facade crypt-pass="MoquiDefaultPassword:CHANGEME"> 
    <datasource group-name="transactional" database-conf-name="mysql" schema-name=""> 
     <inline-jdbc> 
      <xa-properties user="moqui" password="moqui" pinGlobalTxToPhysicalConnection="true" serverName="192.168.1.237" port="3400" databaseName="CJZCDefault" autoReconnectForPools="true" 
       useUnicode="true" encoding="UTF-8"/> 
     </inline-jdbc> 
    </datasource> 

    <datasource group-name="tenantcommon" database-conf-name="mysql" schema-name=""> 
     <inline-jdbc> 
      <xa-properties user="moqui" password="moqui" pinGlobalTxToPhysicalConnection="true" serverName="192.168.1.237" port="3400" databaseName="CJZCDefault" autoReconnectForPools="true" 
       useUnicode="true" encoding="UTF-8"/> 
     </inline-jdbc> 
    </datasource> 
</entity-facade> 

톰캣 고정 표시기 용기 시작

,

run java -jar moqui-2.0.0.war -load 

catalina.sh run 

처음 데이터 로딩 후 시작 제 톰캣 데이터를로드하는 것 실패하면 세부 로그는 아래에 있지만 두 번째 데이터는 Tomcat에 의해 트리거 된 성공을로드합니다.

WAR 패키지를 명시 적으로 실행하지 않으면 Tomcat이 트리거하고 데이터베이스에서 데이터가 초기화되지 않으면 실패합니다.

도커 mariadb가있는 tomcat (도커가 아닌)이있는 환경에서 완벽하게 실행됩니다.

아마도 일부 환경이 잘못되었을 수 있습니다. 누구든지 같은 문제를 만난다면 깊은 곳까지 파고 들어갈 가치가 있습니다. PostgreSQL의 연결 아파치 톰캣 서버에 배포 내가 모키를 실행하고

Creating network "thirdparty_default" with the default driver 
Creating thirdparty_db-qa_1 
Creating thirdparty_server-qa_1 
[[email protected] third-party]$ sudo docker logs -f thirdparty_server-qa_1 
Using temporary directory: /usr/local/tomcat/webapps/ROOT/execwartmp 
Determined runtime from existing runtime directory: runtime 
Canonicalized runtimePath: /usr/local/tomcat/webapps/ROOT/runtime 
Loading data with args [{load=}] 
15:42:39.490 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Initializing Moqui ExecutionContextFactoryImpl 
- runtime directory: /usr/local/tomcat/webapps/ROOT/runtime 
- runtime config: /usr/local/tomcat/webapps/ROOT/runtime/conf/MoquiProductionConf.xml 
15:42:39.575 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Added component tools    at file:/usr/local/tomcat/webapps/ROOT/runtime/base-component/tools 
15:42:39.575 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Added component webroot   at file:/usr/local/tomcat/webapps/ROOT/runtime/base-component/webroot 
15:42:39.585 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Added component mantle-udm   at file:/usr/local/tomcat/webapps/ROOT/runtime/component/mantle-udm 
15:42:39.598 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Added component mantle-usl   at file:/usr/local/tomcat/webapps/ROOT/runtime/component/mantle-usl 
15:42:39.598 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Added component moqui-zh_CN-addon at file:/usr/local/tomcat/webapps/ROOT/runtime/component/moqui-zh_CN-addon 
15:42:39.600 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Added component zc-3plservices  at file:/usr/local/tomcat/webapps/ROOT/runtime/component/zc-3plservices 
15:42:39.600 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Components after depends-on sort: [tools, webroot, mantle-udm, mantle-usl, moqui-zh_CN-addon, zc-3plservices] 
15:42:39.621 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Merging MoquiConf.xml file from component zc-3plservices 
15:42:39.648 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Merging runtime configuration at /usr/local/tomcat/webapps/ROOT/runtime/conf/MoquiProductionConf.xml 
15:42:40.102 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Initializing worker ThreadPoolExecutor: queue limit 65535, pool-core 4, pool-max 16, pool-alive 60s 
15:42:40.151 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Added JARs from component zc-3plservices: [zc-3plservices-0.0.1.jar] 
15:42:40.192 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Not loading disabled ToolFactory with class: org.moqui.impl.tools.JackrabbitRunToolFactory 
15:42:40.204 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Loading ToolFactory with class: org.moqui.jcache.MCacheToolFactory 
15:42:40.217 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Loading ToolFactory with class: org.moqui.impl.tools.H2ServerToolFactory 
15:42:40.253 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Cache Facade initialized 
15:42:40.675 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Resource Facade initialized 
15:42:40.698 WARN   main      b.t.Configuration Cannot get the unique server ID for this JVM ('bitronix.tm.serverId'). Make sure it is configured and you use only US-ASCII characters. Will use IP address instead (unsafe for production usage!). 
15:42:40.889 INFO   main .moqui.i.c.ExecutionContextFactoryImpl Transaction Facade initialized 
Error loading or running Moqui.loadData with args [{load=}]: java.lang.reflect.InvocationTargetException 
java.lang.reflect.InvocationTargetException 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at MoquiStart.main(MoquiStart.java:114) 
Caused by: java.util.ServiceConfigurationError: org.moqui.context.ExecutionContextFactory: Provider org.moqui.impl.context.ExecutionContextFactoryImpl could not be instantiated 
    at java.util.ServiceLoader.fail(ServiceLoader.java:232) 
    at java.util.ServiceLoader.access$100(ServiceLoader.java:185) 
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:384) 
    at java.util.ServiceLoader$LazyIterator.next(ServiceLoader.java:404) 
    at java.util.ServiceLoader$1.next(ServiceLoader.java:480) 
    at org.moqui.Moqui.loadData(Moqui.java:79) 
    ... 5 more 
Caused by: bitronix.tm.resource.ResourceConfigurationException: cannot create JDBC datasource named DEFAULT_transactional_DS 
    at bitronix.tm.resource.jdbc.PoolingDataSource.init(PoolingDataSource.java:90) 
    at org.moqui.impl.context.TransactionInternalBitronix.getDataSource(TransactionInternalBitronix.groovy:130) 
    at org.moqui.impl.entity.EntityDatasourceFactoryImpl.init(EntityDatasourceFactoryImpl.groovy:82) 
    at org.moqui.impl.entity.EntityFacadeImpl.initAllDatasources(EntityFacadeImpl.groovy:191) 
    at org.moqui.impl.entity.EntityFacadeImpl.<init>(EntityFacadeImpl.groovy:120) 
    at org.moqui.impl.context.ExecutionContextFactoryImpl.initEntityFacade(ExecutionContextFactoryImpl.groovy:687) 
    at org.moqui.impl.context.ExecutionContextFactoryImpl.<init>(ExecutionContextFactoryImpl.groovy:196) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
    at java.lang.Class.newInstance(Class.java:442) 
    at java.util.ServiceLoader$LazyIterator.nextService(ServiceLoader.java:380) 
    ... 8 more 
Caused by: java.lang.ClassNotFoundException: Class [com.mysql.jdbc.jdbc2.optional.MysqlXADataSource] not found 
    at MoquiStart$StartClassLoader.loadClass(MoquiStart.java:496) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:264) 
    at bitronix.tm.utils.ClassLoaderUtils.loadClass(ClassLoaderUtils.java:80) 
    at bitronix.tm.resource.common.XAFactoryHelper.createXAFactory(XAFactoryHelper.java:42) 
    at bitronix.tm.resource.common.XAPool.<init>(XAPool.java:94) 
    at bitronix.tm.resource.jdbc.PoolingDataSource.buildXAPool(PoolingDataSource.java:99) 
    at bitronix.tm.resource.jdbc.PoolingDataSource.init(PoolingDataSource.java:86) 
    ... 20 more 
========== Shutting down Moqui Executable (closing jars, etc) ========== 
14-Jul-2016 15:42:44.446 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:  Apache Tomcat/8.0.36 
14-Jul-2016 15:42:44.447 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:   Jun 9 2016 13:55:50 UTC 
14-Jul-2016 15:42:44.448 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:   8.0.36.0 
14-Jul-2016 15:42:44.448 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:    Linux 
14-Jul-2016 15:42:44.448 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:   3.10.0-327.22.2.el7.x86_64 
14-Jul-2016 15:42:44.448 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:   amd64 
14-Jul-2016 15:42:44.448 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:    /usr/lib/jvm/java-8-openjdk-amd64/jre 
14-Jul-2016 15:42:44.452 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Version:   1.8.0_91-8u91-b14-1~bpo8+1-b14 
14-Jul-2016 15:42:44.452 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log JVM Vendor:   Oracle Corporation 
14-Jul-2016 15:42:44.452 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_BASE:   /usr/local/tomcat 
14-Jul-2016 15:42:44.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log CATALINA_HOME:   /usr/local/tomcat 
14-Jul-2016 15:42:44.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties 
14-Jul-2016 15:42:44.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 
14-Jul-2016 15:42:44.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djdk.tls.ephemeralDHKeySize=2048 
14-Jul-2016 15:42:44.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.endorsed.dirs=/usr/local/tomcat/endorsed 
14-Jul-2016 15:42:44.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.base=/usr/local/tomcat 
14-Jul-2016 15:42:44.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Dcatalina.home=/usr/local/tomcat 
14-Jul-2016 15:42:44.453 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Djava.io.tmpdir=/usr/local/tomcat/temp 
14-Jul-2016 15:42:44.454 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent An older version 1.1.32 of the APR based Apache Tomcat Native library is installed, while Tomcat recommends a minimum version of 1.1.33 
14-Jul-2016 15:42:44.454 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent Loaded APR based Apache Tomcat Native library 1.1.32 using APR version 1.5.1. 
14-Jul-2016 15:42:44.454 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent APR capabilities: IPv6 [true], sendfile [true], accept filters [false], random [true]. 
14-Jul-2016 15:42:44.548 INFO [main] org.apache.catalina.core.AprLifecycleListener.initializeSSL OpenSSL successfully initialized (OpenSSL 1.0.1k 8 Jan 2015) 
14-Jul-2016 15:42:44.734 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-apr-8080"] 
14-Jul-2016 15:42:44.761 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-apr-8009"] 
14-Jul-2016 15:42:44.769 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1219 ms 
14-Jul-2016 15:42:44.811 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina 
14-Jul-2016 15:42:44.811 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.0.36 
14-Jul-2016 15:42:44.893 INFO [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive /usr/local/tomcat/webapps/ROOT.war 
14-Jul-2016 15:42:48.139 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. 
15:42:49.948 INFO -startStop-1  o.moqui.i.w.MoquiContextListener Loading Webapp 'webroot' (Moqui Root Webapp) on ROOT, located at: /usr/local/tomcat/webapps/ROOT/ 
15:42:50.314 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Initializing Moqui ExecutionContextFactoryImpl 
- runtime directory: /usr/local/tomcat/webapps/ROOT/runtime 
- runtime config: /usr/local/tomcat/webapps/ROOT/runtime/conf/MoquiDevConf.xml 
15:42:50.376 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Added component tools    at file:/usr/local/tomcat/webapps/ROOT/runtime/base-component/tools 
15:42:50.376 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Added component webroot   at file:/usr/local/tomcat/webapps/ROOT/runtime/base-component/webroot 
15:42:50.378 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Added component mantle-udm   at file:/usr/local/tomcat/webapps/ROOT/runtime/component/mantle-udm 
15:42:50.383 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Added component mantle-usl   at file:/usr/local/tomcat/webapps/ROOT/runtime/component/mantle-usl 
15:42:50.383 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Added component moqui-zh_CN-addon at file:/usr/local/tomcat/webapps/ROOT/runtime/component/moqui-zh_CN-addon 
15:42:50.384 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Added component zc-3plservices  at file:/usr/local/tomcat/webapps/ROOT/runtime/component/zc-3plservices 
15:42:50.385 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Components after depends-on sort: [tools, webroot, mantle-udm, mantle-usl, moqui-zh_CN-addon, zc-3plservices] 
15:42:50.405 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Merging MoquiConf.xml file from component zc-3plservices 
15:42:50.430 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Merging runtime configuration at /usr/local/tomcat/webapps/ROOT/runtime/conf/MoquiDevConf.xml 
15:42:50.955 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Initializing worker ThreadPoolExecutor: queue limit 65535, pool-core 4, pool-max 16, pool-alive 60s 
15:42:50.994 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Added JARs from component zc-3plservices: [zc-3plservices-0.0.1.jar] 
15:42:51.008 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Not loading disabled ToolFactory with class: org.moqui.impl.tools.JackrabbitRunToolFactory 
15:42:51.013 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Loading ToolFactory with class: org.moqui.jcache.MCacheToolFactory 
15:42:51.021 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Loading ToolFactory with class: org.moqui.impl.tools.H2ServerToolFactory 
15:42:51.036 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Cache Facade initialized 
15:42:51.443 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Resource Facade initialized 
15:42:51.535 WARN -startStop-1      b.t.Configuration Cannot get the unique server ID for this JVM ('bitronix.tm.serverId'). Make sure it is configured and you use only US-ASCII characters. Will use IP address instead (unsafe for production usage!). 
15:42:51.853 WARN -startStop-1      b.t.j.DiskJournal active log file is unclean, did you call BitronixTransactionManager.shutdown() at the end of the last run? 
15:42:51.884 INFO -startStop-1 .moqui.i.c.ExecutionContextFactoryImpl Transaction Facade initialized 
15:42:52.929 INFO -startStop-1   o.moqui.i.e.EntityFacadeImpl Loaded 12 Entity ECA rules from 3 .eecas.xml files 
15:42:52.944 INFO -startStop-1     o.m.i.e.EntityCache Entity Cache initialized, distributed cache invalidate enabled: false 

답변

0

,. 응용 프로그램 서버와 데이터베이스 서버는 별도의 컨테이너에 있습니다. 상황은 약간 다르지만 몇 가지 메모를 게시하기에 충분합니다. 나는 당신의 오류 스택 추적에서 발견

DB 드라이버

우선은 (아마도) 데이터베이스에 연결에 문제가 있음이다.

클래스는 [com.mysql.jdbc.jdbc2.optional.MysqlXADataSource]

데이터베이스에 연결하는 드라이버를 확인를 찾을 수 없습니다. 필자가 쓴 것처럼 PostgreSQL을 사용하고 있으며 설치하는 첫 번째 작업은 PostgreSQL JDBC 드라이버입니다. 무엇이 나를 위해 작동

cp /var/tmp/postgresql-9.2-1002.jdbc4.jar /opt/vi/moqui/runtime/lib 

연결 컨테이너

: 그럼 응용 프로그램을 실행하는 동안 사용할 수 있도록, 내 경우에는 다음과 같이 모키/실행/lib 디렉토리에 드라이버의 JAR 파일을 복사 Docker의 링크 기능을 사용 중입니다. 데이터베이스 서버의 컨테이너 이름은 간단히 이며 이름은입니다.즉, 출력의 마지막 열에 후자의 명령을 실행 한 후 표시되는 이름입니다 :

docker ps -a 

응용 프로그램 서버의 컨테이너를 실행, 내 경우에는, 그 두 용기 사이에 링크를 설정하기 위해 링크 매개 변수를 사용합니다 : 합니다 (고정 표시기 호스트로부터 제공) PG 용기 새로 만든 용기 내의 동일한 이름 (PG)에 따라 사용할 수 있다는

docker run -it --name srv05 --link pg:pg -p 443:8443 -p 80:8080 tomcat:8.5 

--link 파라미터 말한다.

MoquiConf 파일에서 IP 주소 (192.168.1.237)를 pg으로 바꿉니다 (이름을 다르게 지정할 수 있습니다. 물론 제 경우를 따릅니다). 간단한 ping 명령을 사용하여 응용 프로그램 서버 (새로 작성한) 컨테이너 내부에서 (논리 이름을 사용하여) 데이터베이스 서버 (컨테이너)에 연결할 수 있는지 확인할 수 있습니다. https://docs.docker.com/engine/userguide/networking/default_network/dockerlinks/

는 희망이 도움이 :

ping pg 

컨테이너를 연결에 대한 추가 정보를 원하시면 다음 확인.

+0

Class [com.mysql.jdbc.jdbc2.optional.MysqlXADataSource] 문제점을 찾을 수 없으므로 oracle jdk를 tomcat jre로 추가하여 해결했습니다. 문제는 연결이 거부 되었기 때문에 문제가 발생했는데, docker가 maryadb 컨테이너 이후에 tomcat 컨테이너가 시작되도록 보장하지만 tomcat catalina가 실행될 때 mariadb mysql 서비스가 아직 준비되지 않았기 때문에 연결이 거부되기 때문입니다. mariadb 서비스 3306 포트가 준비된 후 tomcat 컨테이너 대기 및 catalina가 실행되도록하려면 https://github.com/aanand/docker-wait/blob/master/wait를 추가하고 tomcat 컨테이너에 대한 명령은/bin/bash -c입니다. "/ wait && catalina.sh run" –

+0

아마도 클래스 [com.mysql.jdbc.jdbc2.optional.MysqlXADataSource]를 찾을 수 없다는 문제는 mariadb에 연결하지 못해서 연결이 거부 된 경우에도 발생합니다. 그래서 바람둥이를위한 jdk는 필요하지 않을지도 모른다. –

+0

다음은 moqui 런타임 https://github.com/shendepu/docker-moqui-mantle에 대한 완전한 Dockerfile입니다. –