obiba/Mica 5.4 Docker Image Seemingly Broken

I have tried installing mica from: https://hub.docker.com/r/obiba/mica

sudo docker run -d -p 8845:8445 obiba/mica:snapshot

Unable to connect to port 8445, I figured something was wrong. The following is a very lengthy traceback, from what I can tell there seems to be an underlying Java issue.

docker logs 3e7b246413c2

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Preparing default plugins in /srv ...
JAVA_OPTS=-Xmx2G
MICA_HOME=/srv
MICA_DIST=/usr/share/mica2/webapp
2024-10-08 12:30:13.395  INFO 68 --- [           main] org.obiba.mica.Application               : Starting Application using Java 1.8.0_402 on 3e7b246413c2 with PID 68 (/usr/share/mica2/webapp/WEB-INF/classes started by mica in /srv)
2024-10-08 12:30:13.398  INFO 68 --- [           main] org.obiba.mica.Application               : The following 1 profile is active: "prod"
2024-10-08 12:30:13.437  WARN 68 --- [           main] o.s.b.c.config.ConfigDataEnvironment     : Property 'spring.profiles' imported from location 'class path resource [application.yml]' is invalid and should be replaced with 'spring.config.activate.on-profile' [origin: class path resource [application.yml] - 54:15]
2024-10-08 12:30:15.340  INFO 68 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'securityConfiguration' of type [org.obiba.mica.config.SecurityConfiguration$$EnhancerBySpringCGLIB$$ac941f0f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2024-10-08 12:30:15.395  INFO 68 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'validationConfiguration' of type [org.obiba.mica.config.ValidationConfiguration$$EnhancerBySpringCGLIB$$da551716] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2024-10-08 12:30:15.408  INFO 68 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'validator' of type [org.springframework.validation.beanvalidation.LocalValidatorFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2024-10-08 12:30:15.469  INFO 68 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2024-10-08 12:30:15.674  INFO 68 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'metricsConfiguration' of type [org.obiba.mica.config.MetricsConfiguration$$EnhancerBySpringCGLIB$$f230a9e2] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2024-10-08 12:30:15.683  INFO 68 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'com.ryantenney.metrics.spring.config.annotation.DelegatingMetricsConfiguration' of type [com.ryantenney.metrics.spring.config.annotation.DelegatingMetricsConfiguration$$EnhancerBySpringCGLIB$$7b45c2aa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2024-10-08 12:30:15.741  INFO 68 --- [           main] o.o.mica.config.MetricsConfiguration     : Initializing Metrics JMX reporting
2024-10-08 12:30:15.748  INFO 68 --- [           main] trationDelegate$BeanPostProcessorChecker : Bean 'getMetricRegistry' of type [com.codahale.metrics.MetricRegistry] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2024-10-08 12:30:15.772  INFO 68 --- [           main] ...
org.springframework.data.repository.core.support.RepositoryComposition$RepositoryFragments.invoke(RepositoryComposition.java:530)
        at org.springframework.data.repository.core.support.RepositoryComposition.invoke(RepositoryComposition.java:286)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$ImplementationMethodExecutionInterceptor.invoke(RepositoryFactorySupport.java:640)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:164)
        at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:81)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:215)
        at com.sun.proxy.$Proxy134.count(Unknown Source)
        at org.obiba.mica.micaConfig.service.MicaConfigService.getOrCreateMicaConfig(MicaConfigService.java:104)
        at org.obiba.mica.micaConfig.service.MicaConfigService.getConfig(MicaConfigService.java:99)
        at org.obiba.mica.micaConfig.service.MicaConfigService.getLocales(MicaConfigService.java:86)
        at org.obiba.mica.micaConfig.service.MicaConfigService$$FastClassBySpringCGLIB$$5789b4ff.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy.invokeMethod(CglibAopProxy.java:386)
        at org.springframework.aop.framework.CglibAopProxy.access$000(CglibAopProxy.java:85)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:704)
        at org.obiba.mica.micaConfig.service.MicaConfigService$$EnhancerBySpringCGLIB$$8e4f881e.getLocales(<generated>)
        at org.obiba.mica.micaConfig.service.MicaConfigService$$FastClassBySpringCGLIB$$5789b4ff.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:793)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
        at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:123)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:763)
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:708)
        at org.obiba.mica.micaConfig.service.MicaConfigService$$EnhancerBySpringCGLIB$$c4668646.getLocales(<generated>)
        at org.obiba.mica.micaConfig.service.EntityConfigKeyTranslationService.getJoinedLocales(EntityConfigKeyTranslationService.java:265)
        at org.obiba.mica.micaConfig.service.EntityConfigKeyTranslationService.<init>(EntityConfigKeyTranslationService.java:85)
        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 org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:211)
        ... 62 common frames omitted
Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect. Client view of cluster state is {type=UNKNOWN, servers=[{address=mongo:27017, type=UNKNOWN, state=CONNECTING, exception={com.mongodb.MongoSocketException: mongo}, caused by {java.net.UnknownHostException: mongo}}]
        at com.mongodb.internal.connection.BaseCluster.getDescription(BaseCluster.java:180)
        at com.mongodb.internal.connection.SingleServerCluster.getDescription(SingleServerCluster.java:44)
        at com.mongodb.client.internal.MongoClientDelegate.getConnectedClusterDescription(MongoClientDelegate.java:144)
        at com.mongodb.client.internal.MongoClientDelegate.createClientSession(MongoClientDelegate.java:101)
        at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.getClientSession(MongoClientDelegate.java:291)
        at com.mongodb.client.internal.MongoClientDelegate$DelegateOperationExecutor.execute(MongoClientDelegate.java:183)
        at com.mongodb.client.internal.MongoCollectionImpl.executeCount(MongoCollectionImpl.java:224)
        at com.mongodb.client.internal.MongoCollectionImpl.countDocuments(MongoCollectionImpl.java:194)
        at org.springframework.data.mongodb.core.MongoTemplate.lambda$doExactCount$14(MongoTemplate.java:1217)
        at org.springframework.data.mongodb.core.MongoTemplate.execute(MongoTemplate.java:598)
        ... 113 common frames omitted

Hi

It says:

Caused by: com.mongodb.MongoTimeoutException: Timed out after 30000 ms while waiting to connect

which means that Mica cannot connect to its database, most likely because your docker compose (?) file is not correct.

Regards
Yannick