I am trying to run the Vulas docker setup on one of our VMs. I followed this guide. When I perform the Run stage of the documentation, the backend service fails to start. I have the following exception which explains me nothing.
#docker logs d04ea50241f7
2018-12-18 10:28:50.841 ERROR 9 --- [ost-startStop-1] o.a.tomcat.jdbc.pool.ConnectionPool : Unable to create initial connections of pool.
org.postgresql.util.PSQLException: FATAL: role "root" does not exist
at org.postgresql.core.v3.ConnectionFactoryImpl.readStartupMessages(ConnectionFactoryImpl.java:712) ~[postgresql-9.4.1208.jre7.jar!/:9.4.1208.jre7]
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:213) ~[postgresql-9.4.1208.jre7.jar!/:9.4.1208.jre7]
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) ~[postgresql-9.4.1208.jre7.jar!/:9.4.1208.jre7]
at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:215) ~[postgresql-9.4.1208.jre7.jar!/:9.4.1208.jre7]
at org.postgresql.Driver.makeConnection(Driver.java:406) ~[postgresql-9.4.1208.jre7.jar!/:9.4.1208.jre7]
at org.postgresql.Driver.connect(Driver.java:274) ~[postgresql-9.4.1208.jre7.jar!/:9.4.1208.jre7]
at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319) ~[tomcat-jdbc-8.5.32.jar!/:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]
2018-12-18 10:28:50.846 ERROR 9 --- [ost-startStop-1] o.s.b.c.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'dispatcherServletRegistration' defined in class path resource [org/springframework/boot/autoconfigure/web/DispatcherServletAutoConfiguration$DispatcherServletRegistrationConfiguration.class]: Unsatisfied dependency expressed through method 'dispatcherServletRegistration' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'hubIntegrationController' defined in URL [jar:file:/vulas/rest-backend.jar!/BOOT-INF/classes!/com/sap/psr/vulas/backend/rest/HubIntegrationController.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'applicationRepositoryImpl': Unsatisfied dependency expressed through field 'appRepository'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'applicationRepository': Cannot create inner bean '(inner bean)#5368a637' of type [org.springframework.orm.jpa.SharedEntityManagerCreator] while setting bean property 'entityManager'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name '(inner bean)#5368a637': Cannot resolve reference to bean 'entityManagerFactory' while setting constructor argument; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'flywayInitializer' defined in class path resource [org/springframework/boot/autoconfigure/flyway/FlywayAutoConfiguration$FlywayConfiguration.class]: Invocation of init method failed; nested exception is org.flywaydb.core.internal.exception.FlywaySqlException:
Unable to obtain database connection
------------------------------------
SQL State : 28000
Error Code : 0
Message : FATAL: role "root" does not exist
The docker containers that are up are
~/vulas/vulnerability-assessment-tool# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
05a90996f80d docker_haproxy "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:8034->7070/tcp, 0.0.0.0:8033->8080/tcp vulas-os-haproxy
2877eeb8db76 docker_patch-lib-analyzer "/vulas/run.sh" 7 minutes ago Up 7 minutes 8080/tcp vulas-os-patch-lib-analyzer
7d05307d9149 docker_frontend-bugs "catalina.sh run" 7 minutes ago Up 7 minutes 8080/tcp vulas-os-frontend-bugs
84311f182d98 docker_rest-lib-utils "/bin/sh -c 'java -D…" 7 minutes ago Up 7 minutes 8092/tcp vulas-os-rest-lib-utils
a55cc03b8ee8 docker_frontend-apps "catalina.sh run" 7 minutes ago Up 7 minutes 8080/tcp vulas-os-frontend-apps
45a7210170e7 docker_postgresql "docker-entrypoint.s…" 7 minutes ago Up 7 minutes 0.0.0.0:8032->5432/tcp vulas-os-postgresql
since the above comment resolves the issue I will post an answer to give more visibility to this question.
The issue you faced was caused by a missing or changed user in the .env file used by Vulas. At this line we can see that Postgres, before creating the database, checks if both POSTGRES_USER and POSTGRES_PASSWORD are set. I can see that in your output the Postgres container started, so at some point in time in the .env file there were those environment variables set. Probably you changed or deleted the POSTGRES_USER. By doing so Vulas tried to connect to Postgres with a different user with respect to the one that created the database, thus failing to initialize the connection.
It is mandatory to modify the .env file before running Vulas for the first time. If you need to change the connection's parameters to the database you need to create a new one. In order to drop the current DB and create a new one give the command docker-compose down -v while in the docker folder of Vulas' repository. This will erase each volume.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With