【问题标题】:Running cloudfoundry sample app on local sandbox在本地沙箱上运行 cloudfoundry 示例应用程序
【发布时间】:2015-06-18 00:51:43
【问题描述】:

这个问题可能看起来很幼稚,但我刚刚开始使用云代工。 我安装了 eclipse 插件并部署了一个示例应用程序。但是每次,在本地运行应用程序或启动服务器时,它都会被推送到远程云服务器并在唯一的域上运行

xxxxx.cfapps.io

有没有办法在开发过程中在 localhost 上运行应用程序?无需每次都连接到远程服务器并推送,就像 Google App Engine 使我们能够做到的那样。每次推送都会导致开发过程变慢。

我尝试在没有互联网连接的情况下启动服务器,但它无法启动。给出一个 sockettimedout 异常。

或者有没有其他方法或解决方法在本地开发并最终将应用程序推送到云代工厂?

【问题讨论】:

    标签: cloud cloud-foundry


    【解决方案1】:

    您部署到 Cloud Foundry 的 Java 应用程序将是常规的 .WAR 文件(或 Spring Boot .JAR),对 Cloud Foundry 环境没有任何硬依赖。因此,您应该能够在本地环境中迭代和测试这些工件。

    您应该遇到的唯一重要问题是您的应用程序是否依赖于 Cloud Foundry 环境中的绑定服务。在这种情况下,我建议使用 Spring Cloud Connectors (http://cloud.spring.io/spring-cloud-connectors/)。

    假设我的应用程序绑定到 Cloud Foundry 环境中的 Redis 服务。我可以像这样用 Spring Cloud 注入这个服务:

    @Autowired(required = false)
    private RedisTemplate<String,String> _redisTemplate;
    

    现在,我的代码可以检查 _redisTemplate 是否为空。如果是这样,我在没有 Redis 的情况下在本地运行。

    或者,也许我确实有一个本地 Redis 实例可供测试。在这种情况下,我会选择:

    @Autowired
    private RedisTemplate<String,String> _redisTemplate;
    

    在我的本地环境中,我从环境配置文件 local 开始。使用 Spring Profiles,我声明 RedisTemplate 的实现以使用此配置文件的本地实例。当我部署到 Cloud Foundry 时,应用程序将自动以 cloud 配置文件启动,并将绑定到 Cloud Foundry Redis 实例而不是您的本地实例。

    【讨论】:

    • 非常感谢 cepage 的回答,除了 spring 云连接器,如果我只是在本地使用开源库说 RabbitMQ 进行开发并且只是在云基础上部署应用程序会好吗?而cloud foundary插件模拟的是哪个服务器是tomcat?
    • 是的,您可以将应用配置为针对本地 RabbitMQ 实例运行,并使用 Spring Cloud Connector 确保它连接到部署时绑定的 RabbitMQ 实例。默认的 Cloud Foundry Java buildpack 将在 Tomcat 中部署 .WAR 文件,因此使用本地 Tomcat 服务器进行测试应该可以正常工作。
    猜你喜欢
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    • 2019-01-12
    相关资源
    最近更新 更多