首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在AppFog/CloudFoundry上部署带有MongoDB的Grails?

如何在AppFog/CloudFoundry上部署带有MongoDB的Grails?
EN

Stack Overflow用户
提问于 2012-11-15 07:47:47
回答 2查看 477关注 0票数 0

Grails在本地的mongodb插件上工作得很好,但是我在AppFog上遇到了一些问题。

对于MongoDB以外的其他数据库,在AppFog上部署Grails的说明非常清楚。文档似乎暗示了MongoDB的自动配置,但如果我将配置设置为以下设置,它将不起作用。

代码语言:javascript
复制
//DataSource.groovy

grails {
  mongo {
    host = "localhost"
    port = 27017
    databaseName = "dbname"
  }
}

自动配置似乎不能用正确的主机名替换localhost。看起来我需要从VCAP_SERVICES中设置值。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-15 13:15:46

您是否在Grails项目中安装了CloudFoundry plugin?该插件为Grails应用程序中的MongoDB和其他数据源执行自动重新配置。

如果由于某种原因,您不能或不想使用Grails CloudFoundry插件,那么可以使用cloudfoundry-runtime Java API作为使用环境变量的替代方法。此API允许您访问与存储在环境变量中的信息相同的信息,但它比直接解析环境变量要干净一些。

票数 2
EN

Stack Overflow用户

发布于 2012-11-15 07:47:47

联系支持人员后,答案是使用VCAP_SERVICE环境变量。在网上钻研之后,我想出了如何在配置中检索和使用VCAP_SERVICES。

代码语言:javascript
复制
grails {
    def vcap = System.env.VCAP_SERVICES
    def credentials = vcap ? grails.converters.JSON.parse(vcap)["mongodb-1.8"][0]["credentials"] : null
    mongo {
        host = credentials ? credentials.hostname : "localhost"
        port = credentials ? credentials.port : "27017"
        username = credentials ? credentials.username : null
        password = credentials ? credentials.password : null
        databaseName = credentials ? credentials.db : "dbname"
    }
}

我还创建了a github gist this configuration

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13389379

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档