当前位置: 首页 > 知识库问答 >
问题:

在Heroku上部署clojure web-app,$port绑定

孔礼骞
2023-03-14

我编写了一个需要快速部署的20分钟Web服务,因此我想到了Heroku。我浏览了他们的示例,根据文档添加了一个Procfile:

web: java $JVM_OPTS -cp target/random-pairs.jar Clojure.main -m random-pairs.system

服务器只是jetty包装在组件/生命周期接口实现中,所以我添加了从Heroku ENV读取端口/主机的调用,也没有花太长时间:

(defn new []
  (let [host (or (System/getenv "HOST") "localhost")
        port (or (Integer. (System/getenv "PORT")) 8080)]
    (map->Server {:host host :port port :server nil :database nil})))

然后我推到heroku分店,非常高兴地看到它建造:

remote: -----> Clojure (Leiningen 2) app detected
remote: -----> Installing OpenJDK 1.8... done
remote: -----> Using cached Leiningen 2.7.1
remote:        Writing: lein script
remote: -----> Building with Leiningen
remote:        Running: lein uberjar
remote:        Compiling random-pairs.api
remote:        Compiling random-pairs.routing
remote:        Compiling random-pairs.server
remote:        Compiling random-pairs.system
remote:        Compiling random-pairs.utils
remote:        Created /tmp/build_39db3b5354727cb980092a4caa080664/target/random-pairs-0.1.0-SNAPSHOT.jar
remote:        Created /tmp/build_39db3b5354727cb980092a4caa080664/target/random-pairs.jar
remote: -----> Discovering process types
remote:        Procfile declares types -> web
remote: 
remote: -----> Compressing...
remote:        Done: 70.5M
remote: -----> Launching...

我偷看了一下日志确认:

2017-09-27T10:11:43.214499+00:00 heroku[web.1]: Starting process with command `java $JVM_OPTS -cp target/random-pairs.jar clojure.main -m random-pairs.system`
2017-09-27T10:11:46.312843+00:00 app[web.1]: Setting JAVA_TOOL_OPTIONS defaults based on dyno size. Custom settings will override them.
2017-09-27T10:11:46.316262+00:00 app[web.1]: Picked up JAVA_TOOL_OPTIONS: -Xmx300m -Xss512k -Dfile.encoding=UTF-8 
2017-09-27T10:11:49.562990+00:00 app[web.1]: 2017-09-27 10:11:49.559 INFO  default    org.eclipse.jetty.util.log - Logging initialized @3234ms
2017-09-27T10:11:50.401779+00:00 app[web.1]: 2017-09-27 10:11:50.401 INFO  default    random-pairs.system - :random-pairs.system/create-system Creating system
2017-09-27T10:11:50.404459+00:00 app[web.1]: 2017-09-27 10:11:50.404 INFO  default    random-pairs.system - :random-pairs.system/start Starting the application
2017-09-27T10:11:50.409370+00:00 app[web.1]: 2017-09-27 10:11:50.409 INFO  default    random-pairs.server - :random-pairs.server/server-start Starting Server component host: localhost port: 15701
2017-09-27T10:11:50.435805+00:00 app[web.1]: 2017-09-27 10:11:50.435 INFO  default    org.eclipse.jetty.server.Server - jetty-9.2.z-SNAPSHOT
2017-09-27T10:11:50.478304+00:00 app[web.1]: 2017-09-27 10:11:50.477 INFO  default    o.e.jetty.server.ServerConnector - Started ServerConnector@1a1f79ce{HTTP/1.1}{localhost:15701}
2017-09-27T10:11:50.478742+00:00 app[web.1]: 2017-09-27 10:11:50.478 INFO  default    org.eclipse.jetty.server.Server - Started @4162ms
2017-09-27T10:11:50.479247+00:00 app[web.1]: 2017-09-27 10:11:50.479 INFO  default    random-pairs.system - :random-pairs.system/main Application fully functional

很好,Heroku看起来很整洁。所以我继续发送一些请求来测试一切正常。只是它没有。我又看了一遍日志,只看到:

2017-09-27T10:13:48.345516+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2017-09-27T10:13:48.345575+00:00 heroku[web.1]: Stopping process with SIGKILL
2017-09-27T10:13:48.488069+00:00 heroku[web.1]: State changed from starting to crashed
2017-09-27T10:13:48.476415+00:00 heroku[web.1]: Process exited with status 137

以宙斯的名义这是什么?绑定到$端口失败?我在原木上清楚地看到了Jetty拿起端口,系统就上线了?

共有1个答案

汝才良
2023-03-14

我知道会发生什么--它是经典的IP4/ip6,“localhost”在heroku云机上解析为ip6地址。放入0.0.0.0(或者假设也不指定注释中建议的主机)解决了问题。

 类似资料:
  • 当我试图将我的流星应用程序部署到Heroku时,它在引导时崩溃了。

  • 目标 将 https://github.com/Ricardo-Li/node-practice-2 (这个项目已经被删了。参照 https://github.com/alsotang/node-lessons/tree/master/lesson3 的代码自己操作一下吧。)这个项目部署上 heroku,成为一个线上项目 我部署的在这里 http://serene-falls-9294.herok

  • 我正在开发一个基于nodejs和postgresql的corona病毒项目。我正在尝试在heroku上部署我的应用程序,但我遇到了一些问题。这些问题来自postgres配置(我认为)。 我有一个. env文件,其中我初始化了一些变量(DATABASE_URL,...),但我不知道如何将它们传输到heroku。我关联了一个插件postgres-heroku,它会生成一个具有随机值的DATABASE_

  • 部署到 Google App Engine 是在Google云服务上托管通用Nuxt应用程序的快速而简单的解决方案。 在本指南中,我们在本地构建应用程序,然后将整个项目文件夹上传到Google App Engine。 上传后,Google App Engine将自动启动package.json中的 start 脚本,您的应用程序将立即可用。 入门 确保您在 Google App Engine 上设

  • 我是lagom scala API初学者。我使用lagom scala play框架开发了rest API。现在我想在heroku上部署我的服务,只是为了实时测试的目的。我遵循下面的链接继续。 ------>正在运行:sbt编译阶段 正在下载1.2.8的sbt launcher: 摘自https://repo.scala-sbt.org/scalasbt/maven-releases/org/sc

  • 当我试图在heroku上部署springboot应用程序时,出现了以下错误: 无法执行目标org.apache.Maven.plugins:maven-compiler-plugin:3.8.1:在项目后端编译(default-compile):错误编译:无效的目标版本:11->[Help 1]Remote:[error]Remote:[error]要查看错误的全部堆栈跟踪,请使用-e开关重新运行