Spring Boot: Heroku
Tips for running with Spring Boot applications on Heroku
Error: failed to bind to $PORT within 90 seconds
Symptom:
2019-11-21T00:07:44.777985+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 90 seconds of launch
2019-11-21T00:07:44.778119+00:00 heroku[web.1]: Stopping process with SIGKILL
2019-11-21T00:07:44.954279+00:00 heroku[web.1]: State changed from starting to crashed
2019-11-21T00:07:44.939776+00:00 heroku[web.1]: Process exited with status 137
Solution:
In src/main/resources/application.properties
you need:
server.port=${PORT:8080}
Reason: Heroku doesn’t always run your webapp on port 8080. It runs many webapps on the same server, on many different ports.
Your webapp must run on the port Heroku tells it to run on, which is specified in the PORT
environment variable. If it doesn’t start up there,
Heroku kills it off.
Related topics:
- Spring Boot: —A Java web application framework
- Spring Boot: Actuator—Checking the endpoint mappings, health or other info about your Spring Boot app
- Spring Boot: Application Properties—Defining the application.properties
- Spring Boot: ControllerAdvice—A place to factor out common ExceptionHandler, ModelAttribute and InitBinder code across multiple controllers
- Spring Boot: CSV—Downloading and Uploading CSV files with Spring Boot
- Spring Boot: Database Migrations—When you need to make a change to your database schema for an app in progress
- Spring Boot: Heroku—Tips for running with Spring Boot applications on Heroku
- Spring Boot: Logging—How to write information to the log in Spring Boot
- Spring Boot: OAuth—How to implement OAuth for authentication in Spring Boot
- Spring Boot: POST and CSRF—If you get 403 forbidden messages when using POST
- Spring Boot: Postgres—Using Spring Boot with Postgres
- Spring Boot: RestTemplate—When you need to access other APIs from the backend of your Spring Boot Application
- Spring Boot: Secrets—Ways of keepings database credentials and OAuth client secrets out of Github
- Spring Boot: Security—Authentication, Authorization and other Security issues
- Spring Boot: Sessions—How to make the stateless HTTP protocol stateful
- Spring Boot: SQL—Working with SQL and Databases in Spring Boot
- Spring Boot: VS Code—Suggested VS Code extensions for working with Spring Boot