首页 > 解决方案 > 将 postgres 端口转发到 docker-toolbox 的容器中

问题描述

我想在 Windows 10(不是 Pro)docker 容器中使用元数据库来访问来自远程 PostgreSQL 实例转发的 SSH 端口的数据。

  1. 我已将 Putty 设置为从远程主机端口 5432 端口转发到本地 127.0.0.1:5432。我可以使用在本地主机上运行的 pgAdmin 连接到远程数据库。✔</li>
  2. 我已经将 Virtualbox docker 主机映像设置为在 NAT 卡上将主机端口 127.0.0.1:5432 端口转发到来宾端口 5432(不提供 IP)。
  3. 我已经跑去docker-machine ip default找 docker 主机的 ip。这是 192.168.99.100 ✔
  4. 最后,我将元数据库 docker 环境变量设置为 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

我仍然无法连接到 postgres 实例。我的设置可能有什么问题?在提供正确的 IP 时,我在哪一步犯了错误?在第 3 步之后如何轻松测试我的数据库应该可以从 docker 容器内部访问?

``` 08-16 10:23:07 INFO metabase.util :: Loading Metabase... 08-16 10:23:15 INFO util.encryption :: 此 Metabase 实例已禁用已保存的凭据加密。有关详细信息,请参阅https://www.metabase.com/docs/latest/operations-guide/start.html#encrypting-your-database-connection-details-at-rest 08-16 10:23:33 INFO 元数据库.core :: 在独立模式下启动 Metabase 08-16 10:23:33 INFO metabase.core :: 使用配置启动嵌入式 Jetty Web 服务器:{:port 3000, :host "0.0.0.0"}

08-16 10:23:33 INFO metabase.core :: 开始 Metabase 版本 v0.30.0 (04836dc release-0.30.0) ... 08-16 10:23:33 INFO metabase.core :: 系统时区是 'GMT ' ...警告:有吗?已经提到:#'clojure.core/any? 在命名空间:monger.collection,被替换为:#'monger.collection/any? 08-16 10:23:35 INFO metabase.core :: 设置和迁移 Metabase DB。请坐好,这可能需要一分钟... 08-16 10:23:35 INFO metabase.db :: 验证 postgres 数据库连接... 2018 年 8 月 16 日上午 10:23:36 org.postgresql.core.v3 .ConnectionFactoryImpl 日志警告:连接到 192.168.99.100:5432 时发生 ConnectException java.net.ConnectException:在 java.net.PlainSocketImpl.socketConnect(Native Method) 在 java.net.AbstractPlainSocketImpl 的连接被拒绝(连接被拒绝)。

2018 年 8 月 16 日上午 10:23:36 org.postgresql.Driver 连接严重:连接错误:org.postgresql.util.PSQLException:连接到 192.168.99.100:5432 被拒绝。检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接。在 org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:245) 在 org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:49) 在 org.postgresql.jdbc.PgConnection.(PgConnection.java: 195) 在 org.postgresql.Driver.makeConnection(Driver.java:452) 在 org.postgresql.Driver.connect(Driver.java:254) 在 java.sql.DriverManager.getConnection(DriverManager.java:664) 在 java. sql.DriverManager.getConnection(DriverManager.java:208) 在 clojure.java.jdbc$get_connection.invokeStatic(jdbc.clj:

08-16 10:23:36 错误 metabase.driver :: 无法连接到数据库:org.postgresql.util.PSQLException:连接到 192.168.99.100:5432 被拒绝。检查主机名和端口是否正确以及 postmaster 是否接受 TCP/IP 连接。08-16 10:23:36 错误 metabase.core :: Metabase Initialization FAILED java.lang.AssertionError: Assert failed: Unable to connect to Metabase postgres DB。(绑定[允许潜在不安全的连接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) 在 metabase.db$verify_db_connection.invokeStatic(db.clj:361) 在 metabase.db$verify_db_connection.invoke(db.clj:358) 在 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) 在 metabase.core$init_BANG_.invoke(core.clj:138) 在 metabase.core$start_normally.invokeStatic(core.clj:245) 在 metabase.core$start_normally.invoke(core.clj:239) 在metabase.core$_main.invokeStatic(核心。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 信息 metabase.core:: 元数据库关闭完成 ```

标签: dockerportforwardingdocker-toolbox

解决方案


推荐阅读