docker - 将 postgres 端口转发到 docker-toolbox 的容器中
问题描述
我想在 Windows 10(不是 Pro)docker 容器中使用元数据库来访问来自远程 PostgreSQL 实例转发的 SSH 端口的数据。
- 我已将 Putty 设置为从远程主机端口 5432 端口转发到本地 127.0.0.1:5432。我可以使用在本地主机上运行的 pgAdmin 连接到远程数据库。✔</li>
- 我已经将 Virtualbox docker 主机映像设置为在 NAT 卡上将主机端口 127.0.0.1:5432 端口转发到来宾端口 5432(不提供 IP)。
- 我已经跑去
docker-machine ip default
找 docker 主机的 ip。这是 192.168.99.100 ✔ - 最后,我将元数据库 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:: 元数据库关闭完成 ```
解决方案
推荐阅读
- mysql - MySQL:获取每个客户的最后一个订单,第一个订单和订单金额
- r - 使用交叉验证在 R 中评估 Prophet 模型
- r - 在 r 中翻译 stata 代码,但结果不同
- vue.js - Vue.js - 如何在滚动时更改图像 src?
- c# - 如何更正用于创建 Canvas 的过时代码
- node.js - 如何使用 node.js 将 JSON 文件加载到谷歌 Bigquery
- reactjs - 错误:分页(...):渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null
- .net - Azure B2C .. 无法授予管理员同意。您的组织没有以下 API 的订阅(或服务主体)
- laravel - 为什么当从数字搜索以 0 开始时 Laravel 控制器不显示零前导
- javascript - 这是传播运算符的有效用法吗