绑定cloud foundry后如何访问MongoDB values/data?
How to access MongoDB values/data after binding to cloud foundry?
我正在使用 spring 启动并使用 mongodb 数据库创建了一个 Web 应用程序。在本地,我使用命令提示符 "mongod" 和 "mongo",我可以在其中查询我在 UI.
中输入的数据
我当前的应用程序在默认端口为 27017 的本地主机上使用 MongoDb 运行。我的 Web 应用程序反映了存储在数据库中的数据。当我将此应用程序推送到 cloud foundry 并绑定 MONGODB 服务时,它使用另一个数据库。我在哪里以及如何 view/access 所有正在输入的数据。在本地机器上,我可以使用 db.collection.find() 并查询我的所有数据。
问题
一旦我将我的应用程序推送到 cloud foundry,我在本地存储的所有数据都不会与其链接。我能够将值存储到 PCF MongoDB。但是我不知道如何查看其中的数据。有没有命令或方法可以查看我输入PCF的所有数据MongoDB?
尝试
查看我的 VCAP_SERVICES 我能够看到我的数据库名称、用户名和密码。但它们看起来像是加密的,字母数字和连字符混合在一起。下面的示例 VCAP 的外观(副本值,相同格式)
"database": "9faf201a-39b1-4lse-49242f404g11"
"host": "10.100.100.333"
"password": "2jnkj4nk22kk5lk6kj4n4k6nkj6001"
"username": "401849301k-8g3f-5c3j-k28-583920308592f04"
我尝试在 CLI 中使用下面的代码
mongo someurl.mongodomain.com:45475/database_name -u username -p password
因此,对于数据库名、用户名和密码,我只是简单地复制并粘贴了看起来经过加密的用户名和密码
mongo myurl.com:1337/9faf201a-39b1-4lse-49242f404g11 -u 401849301k-8g3f-5c3j-k28-583920308592f04" -p 2jnkj4nk22kk5lk6kj4n4k6nkj6001
我发现连接失败了。也许我必须输入正确的用户名和密码。在哪里可以设置用户名和密码?我正在使用 spring 引导,它是自动为我处理的。因此,我从未创建用户名或密码。
这里有五个建议(感谢 Daniel.Mikusa 最后一个):
为 mongodb 推送网络客户端并将其绑定到您的数据库。 mongo express 似乎有一个 cloudfoundry 包装器:https://github.com/komushi/cf-mongo-express .
您可以使用 mongo 客户端程序连接到远程 mongodb,其方式与连接本地 mongodb 的方式类似.您可以在应用的环境中找到凭据(用户名、密码、数据库名称):
cf env <your-app-name>
但是,对 mongodb 实例的访问可能会被 CloudFoundry 安装之外的计算机阻止。在这种情况下,您可能想尝试下一个选项。
将安装了 mongo 客户端的 docker 容器推送到 cloudfoundry。 SSH 进入 docker 容器,并从那里使用 mongo 客户端。未在所有 cloudfoundry 安装中启用将 docker 容器推送到 CF。
最后,您可以通过 REST 控制器公开您的域对象。可能使用 spring 数据剩余:http://projects.spring.io/spring-data-rest/。
使用 cf ssh
和 ssh 隧道。将 mongodb 实例绑定到应用程序,运行 cf env
以获取主机、端口和凭据(或制作服务密钥)。然后 运行 cf ssh -N -L <localport>:<service-fqdn-or-ip>:<remote-port> app-name
(您连接的应用程序并不重要,它只是我们正在通过的应用程序)。现在将客户端连接到 localhost:<localport>
并使用您从 cf env.
获得的凭据
我正在使用 spring 启动并使用 mongodb 数据库创建了一个 Web 应用程序。在本地,我使用命令提示符 "mongod" 和 "mongo",我可以在其中查询我在 UI.
中输入的数据我当前的应用程序在默认端口为 27017 的本地主机上使用 MongoDb 运行。我的 Web 应用程序反映了存储在数据库中的数据。当我将此应用程序推送到 cloud foundry 并绑定 MONGODB 服务时,它使用另一个数据库。我在哪里以及如何 view/access 所有正在输入的数据。在本地机器上,我可以使用 db.collection.find() 并查询我的所有数据。
问题
一旦我将我的应用程序推送到 cloud foundry,我在本地存储的所有数据都不会与其链接。我能够将值存储到 PCF MongoDB。但是我不知道如何查看其中的数据。有没有命令或方法可以查看我输入PCF的所有数据MongoDB?
尝试
查看我的 VCAP_SERVICES 我能够看到我的数据库名称、用户名和密码。但它们看起来像是加密的,字母数字和连字符混合在一起。下面的示例 VCAP 的外观(副本值,相同格式)
"database": "9faf201a-39b1-4lse-49242f404g11"
"host": "10.100.100.333"
"password": "2jnkj4nk22kk5lk6kj4n4k6nkj6001"
"username": "401849301k-8g3f-5c3j-k28-583920308592f04"
我尝试在 CLI 中使用下面的代码
mongo someurl.mongodomain.com:45475/database_name -u username -p password
因此,对于数据库名、用户名和密码,我只是简单地复制并粘贴了看起来经过加密的用户名和密码
mongo myurl.com:1337/9faf201a-39b1-4lse-49242f404g11 -u 401849301k-8g3f-5c3j-k28-583920308592f04" -p 2jnkj4nk22kk5lk6kj4n4k6nkj6001
我发现连接失败了。也许我必须输入正确的用户名和密码。在哪里可以设置用户名和密码?我正在使用 spring 引导,它是自动为我处理的。因此,我从未创建用户名或密码。
这里有五个建议(感谢 Daniel.Mikusa 最后一个):
为 mongodb 推送网络客户端并将其绑定到您的数据库。 mongo express 似乎有一个 cloudfoundry 包装器:https://github.com/komushi/cf-mongo-express .
您可以使用 mongo 客户端程序连接到远程 mongodb,其方式与连接本地 mongodb 的方式类似.您可以在应用的环境中找到凭据(用户名、密码、数据库名称):
cf env <your-app-name>
但是,对 mongodb 实例的访问可能会被 CloudFoundry 安装之外的计算机阻止。在这种情况下,您可能想尝试下一个选项。
将安装了 mongo 客户端的 docker 容器推送到 cloudfoundry。 SSH 进入 docker 容器,并从那里使用 mongo 客户端。未在所有 cloudfoundry 安装中启用将 docker 容器推送到 CF。
最后,您可以通过 REST 控制器公开您的域对象。可能使用 spring 数据剩余:http://projects.spring.io/spring-data-rest/。
使用
cf ssh
和 ssh 隧道。将 mongodb 实例绑定到应用程序,运行cf env
以获取主机、端口和凭据(或制作服务密钥)。然后 运行cf ssh -N -L <localport>:<service-fqdn-or-ip>:<remote-port> app-name
(您连接的应用程序并不重要,它只是我们正在通过的应用程序)。现在将客户端连接到localhost:<localport>
并使用您从 cf env. 获得的凭据