I would like to use metabase in a Windows 10 (not Pro) docker container accessing my data that comes SSH port forwarded from a remote PostgreSQL instance.
- I've set up Putty to port forward from the remote host port 5432 to local 127.0.0.1:5432. I could connect to remote DB using pgAdmin running on localhost. ✔
- I've set up the Virtualbox docker host image to port forward on the NAT card the host port 127.0.0.1:5432 to the guest port 5432 (without providing an IP).
- I've run
docker-machine ip default
to find the ip of the docker host. It's 192.168.99.100 ✔ - Finally, I've set up the metabase docker environment variables as
docker run -d -p 3000:3000 \ -e "MB_DB_TYPE=postgres" \ -e "MB_DB_DBNAME=<my db name>" \ -e "MB_DB_PORT=5432" \ -e "MB_DB_USER=<username>" \ -e "MB_DB_PASS=<password>" \ -e "MB_DB_HOST=192.168.99.100" \ --name metabase metabase/metabase
Still I can't connect to postgres instance. What might be wrong with my setup? In which step do I err on providing the proper IP? How can I test easily after step 3 that my db should be accessible from inside a docker container?
``` 08-16 10:23:07 INFO metabase.util :: Loading Metabase... 08-16 10:23:15 INFO util.encryption :: Saved credentials encryption is DISABLED for this Metabase instance. For more information, see https://www.metabase.com/docs/latest/operations-guide/start.html#encrypting-your-database-connection-details-at-rest 08-16 10:23:33 INFO metabase.core :: Starting Metabase in STANDALONE mode 08-16 10:23:33 INFO metabase.core :: Launching Embedded Jetty Webserver with config: {:port 3000, :host "0.0.0.0"}
08-16 10:23:33 INFO metabase.core :: Starting Metabase version v0.30.0 (04836dc release-0.30.0) ... 08-16 10:23:33 INFO metabase.core :: System timezone is 'GMT' ... WARNING: any? already refers to: #'clojure.core/any? in namespace: monger.collection, being replaced by: #'monger.collection/any? 08-16 10:23:35 INFO metabase.core :: Setting up and migrating Metabase DB. Please sit tight, this may take a minute... 08-16 10:23:35 INFO metabase.db :: Verifying postgres Database Connection ... Aug 16, 2018 10:23:36 AM org.postgresql.core.v3.ConnectionFactoryImpl log WARNING: ConnectException occurred while connecting to 192.168.99.100:5432 java.net.ConnectException: Connection refused (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:69) at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:156) at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) at org.postgresql.jdbc.PgConnection.(PgConnection.java:195) at org.postgresql.Driver.makeConnection(Driver.java:452) at org.postgresql.Driver.connect(Driver.java:254) 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:370) at clojure.java.jdbc$get_connection.invoke(jdbc.clj:229) at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1023) at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1005) at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1099) at clojure.java.jdbc$query.invoke(jdbc.clj:1056) at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1072) at clojure.java.jdbc$query.invoke(jdbc.clj:1056) at metabase.driver.generic_sql$can_connect_QMARK_.invokeStatic(generic_sql.clj:209) at metabase.driver.generic_sql$can_connect_QMARK_.invoke(generic_sql.clj:206) at metabase.driver$fn__28294$G__28047__28301.invoke(driver.clj:104) at metabase.driver$can_connect_with_details_QMARK_$fn__28424.invoke(driver.clj:516) at clojure.core$binding_conveyor_fn$fn__5476.invoke(core.clj:2022) 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)
Aug 16, 2018 10:23:36 AM org.postgresql.Driver connect SEVERE: Connection error: org.postgresql.util.PSQLException: Connection to 192.168.99.100: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:245) at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) at org.postgresql.jdbc.PgConnection.(PgConnection.java:195) at org.postgresql.Driver.makeConnection(Driver.java:452) at org.postgresql.Driver.connect(Driver.java:254) 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:370) at clojure.java.jdbc$get_connection.invoke(jdbc.clj:229) at clojure.java.jdbc$db_query_with_resultset_STAR_.invokeStatic(jdbc.clj:1023) at clojure.java.jdbc$db_query_with_resultset_STAR_.invoke(jdbc.clj:1005) at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1099) at clojure.java.jdbc$query.invoke(jdbc.clj:1056) at clojure.java.jdbc$query.invokeStatic(jdbc.clj:1072) at clojure.java.jdbc$query.invoke(jdbc.clj:1056) at metabase.driver.generic_sql$can_connect_QMARK_.invokeStatic(generic_sql.clj:209) at metabase.driver.generic_sql$can_connect_QMARK_.invoke(generic_sql.clj:206) at metabase.driver$fn__28294$G__28047__28301.invoke(driver.clj:104) at metabase.driver$can_connect_with_details_QMARK_$fn__28424.invoke(driver.clj:516) at clojure.core$binding_conveyor_fn$fn__5476.invoke(core.clj:2022) 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 (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:69) at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:156) ... 24 more
08-16 10:23:36 ERROR metabase.driver :: Failed to connect to database: org.postgresql.util.PSQLException: Connection to 192.168.99.100:5432 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 08-16 10:23:36 ERROR metabase.core :: Metabase Initialization FAILED 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:365) at metabase.db$verify_db_connection.invoke(db.clj:358) at metabase.db$verify_db_connection.invokeStatic(db.clj:361) at metabase.db$verify_db_connection.invoke(db.clj:358) at metabase.db$setup_db_BANG_.invokeStatic(db.clj:427) at metabase.db$setup_db_BANG_.doInvoke(db.clj:421) at clojure.lang.RestFn.invoke(RestFn.java:421) at metabase.core$init_BANG_.invokeStatic(core.clj:161) at metabase.core$init_BANG_.invoke(core.clj:138) at metabase.core$start_normally.invokeStatic(core.clj:245) at metabase.core$start_normally.invoke(core.clj:239) at metabase.core$_main.invokeStatic(core.clj:265) at metabase.core$_main.doInvoke(core.clj:260) 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) 08-16 10:23:36 INFO metabase.core :: Metabase Shutting Down ... 08-16 10:23:36 INFO metabase.core :: Metabase Shutdown COMPLETE ```