DependencyTrack / dependency-track

Dependency-Track is an intelligent Component Analysis platform that allows organizations to identify and reduce risk in the software supply chain.
https://dependencytrack.org/
Apache License 2.0
2.44k stars 530 forks source link

dependencytrack/apiserver not running while configuring Postgresql db with Docker Compose #3835

Closed thesk7828 closed 3 weeks ago

thesk7828 commented 3 weeks ago

Current Behavior

dependencytrack/apiserver keeps on restarting whenever Postgreql db connection is configured in docker-compose.yml file.

image

Steps to Reproduce

  1. Create db along with user/password in Postgresql with following commands:
    sudo -u postgres psql
    postgres=# create database mydb;
    postgres=# create user myuser with encrypted password 'mypass';
    postgres=# grant all privileges on database mydb to myuser;
  2. nano docker-compose.yml
  3. Enabling the following configurations for Posgresql db connection in dependencytrack/apiserver environment:
    - ALPINE_DATABASE_MODE=external
    - ALPINE_DATABASE_URL=jdbc:postgresql://localhost:5432/mydb
    - ALPINE_DATABASE_DRIVER=org.postgresql.Driver
    - ALPINE_DATABASE_USERNAME=myuser
    - ALPINE_DATABASE_PASSWORD=mypass
  4. docker compose version

image

  1. docker compose up -d

image

  1. docker ps -a

image

  1. Goto Firefox browser (or any) and observe the obvious behaviour

image

Expected Behavior

CONTAINER ID   IMAGE                       COMMAND                  CREATED       STATUS                                     PORTS                                       NAMES
589e6201a1d8   dependencytrack/frontend    "/docker-entrypoint.…"   2 hours ago   Up 2 hours                                 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   ubuntu-dtrack-frontend-1
b72297d6eb84   dependencytrack/apiserver   "/bin/sh -c 'exec ja…"   2 hours ago   Up 2 hours (health: starting)              0.0.0.0:8081->8080/tcp, :::8081->8080/tcp   ubuntu-dtrack-apiserver-1

Dependency-Track Version

4.11.3

Dependency-Track Distribution

Container Image

Database Server

PostgreSQL

Database Server Version

16.3

Browser

Mozilla Firefox

Checklist

nscuro commented 3 weeks ago

So what are the API server logs saying?

docker compose logs -f dtrack-apiserver

Any warnings or errors in the PostgreSQL logs?

thesk7828 commented 3 weeks ago
dtrack-apiserver-1  | 2024-06-11 18:16:52,688 INFO [Config] Initializing Configuration
dtrack-apiserver-1  | 2024-06-11 18:16:52,689 INFO [Config] System property alpine.application.properties not specified
dtrack-apiserver-1  | 2024-06-11 18:16:52,690 INFO [Config] Loading application.properties from classpath
dtrack-apiserver-1  | 2024-06-11 18:16:52,698 INFO [Config] --------------------------------------------------------------------------------
dtrack-apiserver-1  | 2024-06-11 18:16:52,698 INFO [Config] Application:  Dependency-Track
dtrack-apiserver-1  | 2024-06-11 18:16:52,699 INFO [Config] Version:      4.11.3
dtrack-apiserver-1  | 2024-06-11 18:16:52,700 INFO [Config] Built-on:     2024-06-03T09:33:35Z
dtrack-apiserver-1  | 2024-06-11 18:16:52,700 INFO [Config] --------------------------------------------------------------------------------
dtrack-apiserver-1  | 2024-06-11 18:16:52,700 INFO [Config] Framework:    Alpine
dtrack-apiserver-1  | 2024-06-11 18:16:52,702 INFO [Config] Version :     2.2.5
dtrack-apiserver-1  | 2024-06-11 18:16:52,703 INFO [Config] Built-on:     2024-02-29T20:30:01Z
dtrack-apiserver-1  | 2024-06-11 18:16:52,703 INFO [Config] --------------------------------------------------------------------------------
dtrack-apiserver-1  | 2024-06-11 18:16:52,810 INFO [RequirementsVerifier] Initializing requirements verifier
dtrack-apiserver-1  | 2024-06-11 18:16:52,811 INFO [UpgradeInitializer] Initializing upgrade framework
dtrack-apiserver-1  | 2024-06-11 18:16:53,082 ERROR [UpgradeMetaProcessor] An error occurred connecting to the database.
dtrack-apiserver-1  | org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
dtrack-apiserver-1  |   at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:346)
dtrack-apiserver-1  |   at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
dtrack-apiserver-1  |   at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:273)
dtrack-apiserver-1  |   at org.postgresql.Driver.makeConnection(Driver.java:446)
dtrack-apiserver-1  |   at org.postgresql.Driver.connect(Driver.java:298)
dtrack-apiserver-1  |   at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
dtrack-apiserver-1  |   at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
dtrack-apiserver-1  |   at alpine.server.upgrade.UpgradeMetaProcessor.createConnection(UpgradeMetaProcessor.java:187)
dtrack-apiserver-1  |   at alpine.server.upgrade.UpgradeMetaProcessor.<init>(UpgradeMetaProcessor.java:63)
dtrack-apiserver-1  |   at org.dependencytrack.upgrade.UpgradeInitializer.contextInitialized(UpgradeInitializer.java:56)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1049)
dtrack-apiserver-1  |   at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:624)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:984)
dtrack-apiserver-1  |   at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:740)
dtrack-apiserver-1  |   at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:392)
dtrack-apiserver-1  |   at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1304)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:901)
dtrack-apiserver-1  |   at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:306)
dtrack-apiserver-1  |   at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:532)
dtrack-apiserver-1  |   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
dtrack-apiserver-1  |   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.Server.start(Server.java:470)
dtrack-apiserver-1  |   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.Server.doStart(Server.java:415)
dtrack-apiserver-1  |   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
dtrack-apiserver-1  |   at alpine.embedded.EmbeddedJettyServer.main(EmbeddedJettyServer.java:100)
dtrack-apiserver-1  | Caused by: java.net.ConnectException: Connection refused
dtrack-apiserver-1  |   at java.base/sun.nio.ch.Net.pollConnect(Native Method)
dtrack-apiserver-1  |   at java.base/sun.nio.ch.Net.pollConnectNow(Unknown Source)
dtrack-apiserver-1  |   at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(Unknown Source)
dtrack-apiserver-1  |   at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source)
dtrack-apiserver-1  |   at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
dtrack-apiserver-1  |   at java.base/java.net.Socket.connect(Unknown Source)
dtrack-apiserver-1  |   at org.postgresql.core.PGStream.createSocket(PGStream.java:243)
dtrack-apiserver-1  |   at org.postgresql.core.PGStream.<init>(PGStream.java:98)
dtrack-apiserver-1  |   at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:136)
dtrack-apiserver-1  |   at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:262)
dtrack-apiserver-1  |   ... 26 common frames omitted
dtrack-apiserver-1  | 2024-06-11 18:16:53,083 ERROR [UpgradeInitializer] An error occurred determining database schema version. Unable to continue.
dtrack-apiserver-1  | alpine.server.upgrade.UpgradeException: An error occurred connecting to the database.
dtrack-apiserver-1  |   at alpine.server.upgrade.UpgradeMetaProcessor.createConnection(UpgradeMetaProcessor.java:193)
dtrack-apiserver-1  |   at alpine.server.upgrade.UpgradeMetaProcessor.<init>(UpgradeMetaProcessor.java:63)
dtrack-apiserver-1  |   at org.dependencytrack.upgrade.UpgradeInitializer.contextInitialized(UpgradeInitializer.java:56)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1049)
dtrack-apiserver-1  |   at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:624)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:984)
dtrack-apiserver-1  |   at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:740)
dtrack-apiserver-1  |   at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:392)
dtrack-apiserver-1  |   at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1304)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:901)
dtrack-apiserver-1  |   at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:306)
dtrack-apiserver-1  |   at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:532)
dtrack-apiserver-1  |   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
dtrack-apiserver-1  |   at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.Server.start(Server.java:470)
dtrack-apiserver-1  |   at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89)
dtrack-apiserver-1  |   at org.eclipse.jetty.server.Server.doStart(Server.java:415)
dtrack-apiserver-1  |   at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93)
dtrack-apiserver-1  |   at alpine.embedded.EmbeddedJettyServer.main(EmbeddedJettyServer.java:100)
dtrack-apiserver-1  | Caused by: org.postgresql.util.PSQLException: Connection to localhost:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
dtrack-apiserver-1  |   at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:346)
dtrack-apiserver-1  |   at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:54)
dtrack-apiserver-1  |   at org.postgresql.jdbc.PgConnection.<init>(PgConnection.java:273)
dtrack-apiserver-1  |   at org.postgresql.Driver.makeConnection(Driver.java:446)
dtrack-apiserver-1  |   at org.postgresql.Driver.connect(Driver.java:298)
dtrack-apiserver-1  |   at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
dtrack-apiserver-1  |   at java.sql/java.sql.DriverManager.getConnection(Unknown Source)
dtrack-apiserver-1  |   at alpine.server.upgrade.UpgradeMetaProcessor.createConnection(UpgradeMetaProcessor.java:187)
dtrack-apiserver-1  |   ... 19 common frames omitted
dtrack-apiserver-1  | Caused by: java.net.ConnectException: Connection refused
dtrack-apiserver-1  |   at java.base/sun.nio.ch.Net.pollConnect(Native Method)
dtrack-apiserver-1  |   at java.base/sun.nio.ch.Net.pollConnectNow(Unknown Source)
dtrack-apiserver-1  |   at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(Unknown Source)
dtrack-apiserver-1  |   at java.base/sun.nio.ch.NioSocketImpl.connect(Unknown Source)
dtrack-apiserver-1  |   at java.base/java.net.SocksSocketImpl.connect(Unknown Source)
dtrack-apiserver-1  |   at java.base/java.net.Socket.connect(Unknown Source)
dtrack-apiserver-1  |   at org.postgresql.core.PGStream.createSocket(PGStream.java:243)
dtrack-apiserver-1  |   at org.postgresql.core.PGStream.<init>(PGStream.java:98)
dtrack-apiserver-1  |   at org.postgresql.core.v3.ConnectionFactoryImpl.tryConnect(ConnectionFactoryImpl.java:136)
dtrack-apiserver-1  |   at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:262)
dtrack-apiserver-1  |   ... 26 common frames omitted
nscuro commented 3 weeks ago

You're configuring the database URL to point to localhost, but the database is not running on the same host as the API server. The localhost in the API server container is not the same as the localhost on your machine.

You may be able to get away with using docker.host.internal instead, otherwise you'll need to provide the IP address of the machine that is running your PostgreSQL instance.

Closing because this is not a defect in Dependency-Track.