2017-09-27 1 views
0

J'ai écrit un service Web de 20 minutes dont j'avais besoin rapidement, alors j'ai pensé à Heroku. Je suis passé par leur exemple, a ajouté un Procfile selon la documentation:

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

Le serveur est tout simplement jetée enveloppé dans une implémentation de l'interface de composant/Cycle de vie, alors j'ai ajouté appels lu PORT/HOST de Heroku ENV, également didn « t prendre longtemps:

(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}))) 

Puis je poussé à la branche Heroku et était très heureux de voir qu'il construit:

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... 

Je jeté un œil sur les journaux pour confirmer:

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 [email protected]{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 

Nice, Heroku semble soignée. Donc j'ai continué à envoyer des demandes pour tester tout fonctionne bien. Seulement que non. J'ai regardé encore une fois aux journaux seulement pour voir:

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 

Qu'est-ce que c'est au nom de Zeus? Impossible de lier à $ PORT? Je vois clairement dans les journaux Jetty ramassé le port et le système est allé en ligne?

+0

avez-vous besoin: hôte? Je pense que vous avez seulement besoin d'une déclaration de port. –

+0

Je pense que ça va juste se lier à 0.0.0.0 de toute façon, vous pensez que c'est le problème? – fbielejec

+0

oui, je pense que c'est le problème –

Répondre

3

Je sais ce qui se passe - c'est classique IP4/IP6, "localhost" se résout à l'adresse IP6 sur heroku cloud machine. Mettre 0.0.0.0 (ou sans doute aussi spécifier aucun hôte comme suggéré dans le commentaire) résout le problème.