Failed to connect to postgres database when launching Metabase on a new container

When launching the Metabase container with the Postgres cofigs:

docker run -d -p 3000:3000
-e “MB_DB_TYPE=postgres”
-e “MB_DB_DBNAME=metabase”
-e “MB_DB_PORT=5432”
-e “MB_DB_USER=”
-e “MB_DB_PASS=”
-e “MB_DB_HOST=localhost”
–name metabase metabase/metabase

I get the following errors:

SEVERE: Connection error:
org.postgresql.util.PSQLException: Connection to 127.0.0.1:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:265)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49)
at org.postgresql.jdbc.PgConnection.(PgConnection.java:194)
at org.postgresql.Driver.makeConnection(Driver.java:450)
at org.postgresql.Driver.connect(Driver.java:252)
at java.sql.DriverManager.getConnection(DriverManager.java:664)
at java.sql.DriverManager.getConnection(DriverManager.java:208)
at clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:364)
at clojure.java.jdbc$get_connection.invoke(jdbc.clj:226)
at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1014)
at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:996)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1090)
at clojure.java.jdbc$query.invoke(jdbc.clj:1047)
at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1063)
at clojure.java.jdbc$query.invoke(jdbc.clj:1047)
at metabase.driver.generic_sql$can_connect_QMARK_.invokeStatic(generic_sql.clj:220)
at metabase.driver.generic_sql$can_connect_QMARK_.invoke(generic_sql.clj:217)
at metabase.driver$fn__25825$G__25578__25832.invoke(driver.clj:51)
at metabase.driver$can_connect_with_details_QMARK_$fn__25947.invoke(driver.clj:461)
at clojure.core$binding_conveyor_fn$fn__4676.invoke(core.clj:1938)
at clojure.lang.AFn.call(AFn.java:18)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at org.postgresql.core.PGStream.(PGStream.java:68)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:144)
… 24 more

03-30 17:15:40 ERROR metabase.driver :: Failed to connect to database: org.postgresql.util.PSQLException: Connection to 127.0.0.1:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections.
java.lang.AssertionError: Assert failed: Unable to connect to Metabase postgres DB.
(binding [allow-potentailly-unsafe-connections true] (require (quote metabase.driver)) ((resolve (quote metabase.driver/can-connect-with-details?)) engine details))
at metabase.db$verify_db_connection.invokeStatic(db.clj:349)
at metabase.db$verify_db_connection.invoke(db.clj:342)
at metabase.db$verify_db_connection.invokeStatic(db.clj:345)
at metabase.db$verify_db_connection.invoke(db.clj:342)
at metabase.db$setup_db_BANG_.invokeStatic(db.clj:398)
at metabase.db$setup_db_BANG_.doInvoke(db.clj:392)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at metabase.core$init_BANG_.invokeStatic(core.clj:154)
at metabase.core$init_BANG_.invoke(core.clj:133)
at metabase.core$start_normally.invokeStatic(core.clj:258)
at metabase.core$start_normally.invoke(core.clj:251)
at metabase.core$_main.invokeStatic(core.clj:279)
at metabase.core$_main.doInvoke(core.clj:274)
at clojure.lang.RestFn.invoke(RestFn.java:397)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.RestFn.applyTo(RestFn.java:132)
at metabase.core.main(Unknown Source)
03-30 17:15:40 ERROR metabase.core :: Metabase Initialization FAILED: Assert failed: Unable to connect to Metabase postgres DB.

I am trying to connect to my local postgres DB.

This looks more like a generic “how do I connect to a database on my host form inside a docker container” problem than a Metabase specific thing:

To me it looks like when you give -e "MB_DB_HOST=localhost" to your docker run you effectively tell Docker to expect you database to live inside the Metabase container. You can see from the log output it tries to connect to 127.0.01.

There’s also a whole section in the Metabase :blue_book: Troubleshooting Guide on Running Metabase in Docker