Heroku docker spring boot image error 503 H14 - spring-boot

I few days ago I was trying to deploy a docker image of a spring boot app into heroku.
I have the following docker file:
FROM openjdk:8-jdk-alpine
LABEL maintainer="gabigarciagar#gmail.com"
VOLUME /tmp
COPY ./target/*.jar PetApp_Auth.jar
CMD [ "java","-Xmx300m","-Xss512k","-XX:CICompilerCount=2","-Dfile.encoding=UTF-8","-Dspring.profiles.active=heroku","-Djava.security.egd=file:/dev/./urandom","-jar","/PetApp_Auth.jar" ]
also in my application.properties for a heroku profile i have:
spring.profiles.active=heroku
server.port=${PORT}
server.servlet.context-path=/
then i execute the following commands and everithig looks nice:
$ heroku container:push petapp-authserver -a petapp-authserver
Your image has been successfully pushed. You can now release it with the 'container:release' command.
$ heroku container:release petapp-authserver -a petapp-authserver
Releasing images petapp-authserver to petapp-authserver... done
Also the heroku log show that the app is up and also heroku ps
the database connection is perfect also
$ heroku ps -a petapp-authserver
=== petapp-authserver (Free): java -Xmx300m -Xss512k -XX:CICompilerCount\=2 -Dfile.encoding\=UTF-8 -Dspring.profiles.active\=heroku -Djava.security.egd\=file:/dev/./urandom -jar /PetApp_Auth.jar (1)
petapp-authserver.1: up 2020/03/06 21:09:51 +0100 (~ 1m ago)
Then when i try to see swagger-ui o /actuator/health i get the following:
2020-03-06T20:11:58.149484+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=petapp-authserver.herokuapp.com request_id=e88c2499-b1de-4284-a649-1d8df19ae6c0 fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=https
2020-03-06T20:11:59.443315+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=petapp-authserver.herokuapp.com request_id=9fa4951a-365c-4b9b-bf63-94f8d6792249 fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=https
2020-03-06T20:12:08.185495+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/actuator/health" host=petapp-authserver.herokuapp.com request_id=c4c3382b-43b7-494c-9259-630ce24eb8a4 fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=https
2020-03-06T20:12:08.697245+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=petapp-authserver.herokuapp.com request_id=b044b6fe-ba8d-4b3d-8c7c-8e477ea7b609 fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=https
2020-03-06T20:12:12.943276+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/actuator/health" host=petapp-authserver.herokuapp.com request_id=6ac05b16-148d-4849-a857-c3d6bed9fe01 fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=http
2020-03-06T20:12:13.637589+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=petapp-authserver.herokuapp.com request_id=2c01dbaa-18c5-46f8-8f43-f91ee372a5eb fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=http
2020-03-06T20:12:23.492570+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/swagger-ui.html" host=petapp-authserver.herokuapp.com request_id=2850eb70-1bd5-4737-9505-d59184e95946 fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=http
2020-03-06T20:12:23.878827+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=petapp-authserver.herokuapp.com request_id=f83acdef-840a-4e2e-824c-183cfdc50273 fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=http
as heroku web said https://devcenter.heroku.com/articles/error-codes#h14-no-web-dynos-running
i execute:
heroku ps:scale petapp-authserver=1 -a petapp-authserver
Scaling dynos... done, now running petapp-authserver at 1:Free
And same error
What I am doing wrong??
I was able to deploy the jar directly and it works
heroku deploy:jar PetApp_AuthServer-V-0.0.0.jar -a petapp-authserver
Uploading PetApp_AuthServer-V-0.0.0.jar
-----> Packaging application...
- app: petapp-authserver
- including: PetApp_AuthServer-V-0.0.0.jar
-----> Creating build...
- file: slug.tgz
- size: 46MB
-----> Uploading build...
- success
-----> Deploying...
remote:
remote: -----> heroku-deploy app detected
remote: -----> Installing JDK 1.8... done
remote: -----> Discovering process types
remote: Procfile declares types -> web
remote:
remote: -----> Compressing...
remote: Done: 96.8M
remote: -----> Launching...
remote: Released v12
remote: https://petapp-authserver.herokuapp.com/ deployed to Heroku
remote:
-----> Done
2020-03-13T19:25:13.683982+00:00 heroku[router]: at=info method=POST path="/auth/login" host=petapp-authserver.herokuapp.com request_id=ef9a29b6-c10c-4b82-8088-711d448c3a32 fwd="88.17.74.86" dyno=web.1 connect=1ms service=362ms status=200 bytes=878 protocol=https
2020-03-13T19:25:13.780163+00:00 heroku[router]: at=info method=GET path="/webjars/springfox-swagger-ui/fonts/titillium-web-v6-latin-600.woff2" host=petapp-authserver.herokuapp.com request_id=f2f6334d-2663-49b0-bd28-b5d287e79b68 fwd="88.17.74.86" dyno=web.1 connect=1ms service=13ms status=200 bytes=12634 protocol=https
Why it perfecty works with jar deploy and not with docker??
I have also tried:
Gabi#MSI MINGW64 /d/Proyectos/PetApp/Back/PetApp_AuthServer (develop)
$ heroku container:release web petapp-authserver -a petapp-authserver
! Expected response to be successful, got 404
Gabi#MSI MINGW64 /d/Proyectos/PetApp/Back/PetApp_AuthServer (develop)
$ heroku container:release web petapp-authserver -a petapp-authserver
! Expected response to be successful, got 404
Gabi#MSI MINGW64 /d/Proyectos/PetApp/Back/PetApp_AuthServer (develop)
$ heroku container:release petapp-authserver -a petapp-authserver
Releasing images petapp-authserver to petapp-authserver... done
Thanks in advance

Finally I solved the question.
The point is that the image in heroku must be named same as the process type, in this case web!
so there are two options. Build and pushing the image by using:
heroku container:push web -a petapp-authserver
or create the image locally and the tag it as registry.heroku.com/petapp-authserver/web
docker tag petapp-authserver registry.heroku.com/petapp-authserver/web
docker push registry.heroku.com/petapp-authserver/web
The push refers to repository [registry.heroku.com/petapp-authserver/web]
eb03575d1edf: Preparing
ceaf9e1ebef5: Preparing
9b9b7f3d56a0: Preparing
f1b5933fe4b5: Preparing
eb03575d1edf: Layer already exists
9b9b7f3d56a0: Layer already exists
f1b5933fe4b5: Layer already exists
ceaf9e1ebef5: Layer already exists
latest: digest: sha256:4c0ae2bba092c07bbd89394216b0bf78f458ba3583e63c8d15e01f6b07d6933e size: 1159
heroku container:release web -a petapp-authserver
Releasing images web to petapp-authserver... done
Now my containers are perfectly running in docker!!
Thank you all

In your Procfile or your heroku.yml you have not specified a web worker.
2020-03-06T20:12:23.878827+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=petapp-authserver.herokuapp.com request_id=f83acdef-840a-4e2e-824c-183cfdc50273 fwd="79.147.107.220" dyno= connect= service= status=503 bytes= protocol=http
For containers you should use heroku.yml. Procfile might even be ignored.
https://devcenter.heroku.com/articles/build-docker-images-heroku-yml
Doing this will get rid of your current H14 errors.

Key point is the process type.
For example, when you deploy the jar and runs it, you can see at your logs:
remote: -----> Discovering process types
remote: Procfile declares types -> web
But you don't see it when using release because you haven't specified a process type.
Can you try to run the release command like this and see if it works?
heroku container:release web petapp-authserver -a petapp-authserver
web is the process type!

Related

Heroku deployment with nest js project

I have github account which is connnected with my heroku account. I am trying to deploy code through heroku and my project is also connected with heroku pipeline. Build is getting succeeded. But getting error while accessing app
Heroku logs
2022-09-07T10:08:37.346556+00:00 heroku[web.1]: Starting process with command `npm start`
2022-09-07T10:08:41.005367+00:00 app[web.1]:
2022-09-07T10:08:41.005458+00:00 app[web.1]: > food-court#0.0.1 start
2022-09-07T10:08:41.005458+00:00 app[web.1]: > nest start
2022-09-07T10:08:41.005459+00:00 app[web.1]:
2022-09-07T10:08:41.020373+00:00 app[web.1]: /tmp/start-7b018378.sh: 1: nest: not found
2022-09-07T10:08:41.187916+00:00 heroku[web.1]: Process exited with status 127
2022-09-07T10:08:41.284101+00:00 heroku[web.1]: State changed from starting to crashed
2022-09-07T10:13:07.218759+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=food-court-be-dev.herokuapp.com request_id=52c79661-a554-4c2b-b412-c24429d538c5 fwd="103.181.100.29" dyno= connect= service= status=503 bytes= protocol=https
2022-09-07T10:13:07.784604+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=food-court-be-dev.herokuapp.com request_id=f1a47ec4-6160-47d2-80ef-a0db2569d7bf fwd="103.181.100.29" dyno= connect= service= status=503 bytes= protocol=https
Thanks in advance
resolved issue by changing "start": "nest start", to "start": "node dist/main.js" in package.json

Trouble deploying MERN Application to Heroku

Tried a bunch of reformats on my server.js file. config is put into heroku settings.
Error: Cannot read properties of null (reading 'split')
is what seems to be standing out to me in the logs. Along with the two H10's. I've typed these errors in and tried to change things using the answers I saw on here but still cant get the app to work without the app crash on heroku.
Here are my logs:
2022-06-22T17:25:25.597973+00:00 app[web.1]:
2022-06-22T17:25:25.597982+00:00 app[web.1]: > it-logger-final#1.0.0 start
2022-06-22T17:25:25.597983+00:00 app[web.1]: > node server
2022-06-22T17:25:25.597983+00:00 app[web.1]:
2022-06-22T17:25:25.933187+00:00 app[web.1]: Server running in production mode on port 43811
2022-06-22T17:25:25.933707+00:00 app[web.1]: Error: Cannot read properties of null (reading 'split')
2022-06-22T17:25:26.215915+00:00 heroku[web.1]: Process exited with status 1
2022-06-22T17:25:26.439416+00:00 heroku[web.1]: State changed from starting to crashed
2022-06-22T17:25:28.264639+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=it-logger-motta.herokuapp.com request_id=c5e7c89c-047c-4f11-b52e-337946492e02 fwd="68.134.27.230" dyno= connect= service= status=503 bytes= protocol=https
2022-06-22T17:25:28.553271+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=it-logger-motta.herokuapp.com request_id=cb691fd1-6022-4375-886e-c98520d5ec87 fwd="68.134.27.230" dyno= connect= service= status=503 bytes= protocol=https
Here is my repo: https://github.com/SyntaxMotta/IT-Logger-Final

Why Heroku + voila ipynb app fail to deploy with `failed to bind to $PORT within 60 seconds of launch`

I followed the different pages to deploy a voila ipynb app on heroku:
https://pythonforundergradengineers.com/deploy-jupyter-notebook-voila-heroku.html
https://medium.com/analytics-vidhya/deploying-jupyter-notebook-as-a-web-app-with-heroku-d157b68bcccc
https://github.com/voila-dashboards/voila-heroku
Unfoprtunately, it seems that there is a persisting bug this last month (saw here for instance https://forums.fast.ai/t/heroku-app-wont-deploy/92875/4)
You can find the github repo I am trying to deploy here:
https://github.com/vpicouet/fireball2-etc
The app is base on this Procfile
web: voila --port=$PORT --no-browser --enable_nbextensions=True notebooks/ETC.ipynb
Unfortunately I get this error
2022-03-27T15:17:49.880973+00:00 app[web.1]: [Voila] Using /tmp to store connection files
2022-03-27T15:17:49.881302+00:00 app[web.1]: [Voila] Storing connection files in /tmp/voila_yih2j7ic.
2022-03-27T15:17:49.881356+00:00 app[web.1]: [Voila] Serving static files from /app/.heroku/python/lib/python3.8/site-packages/voila/static.
2022-03-27T15:17:49.890735+00:00 app[web.1]: [Voila] Voilà is running at:
2022-03-27T15:17:49.890737+00:00 app[web.1]: http://localhost:7758/
2022-03-27T15:17:58.000000+00:00 app[api]: Build succeeded
2022-03-27T15:18:48.015586+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2022-03-27T15:18:48.055996+00:00 heroku[web.1]: Stopping process with SIGKILL
2022-03-27T15:18:48.227953+00:00 heroku[web.1]: Process exited with status 137
2022-03-27T15:18:48.274554+00:00 heroku[web.1]: State changed from starting to crashed
2022-03-27T15:24:44.773897+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=fireball2-etc-2022.herokuapp.com request_id=0b0c1707-d6ae-449a-9059-f2d1d3f8c652 fwd="74.105.154.225" dyno= connect= service= status=503 bytes= protocol=https
2022-03-27T15:39:30.626492+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=fireball2-etc-2022.herokuapp.com request_id=af5c3e4a-019f-47c3-a047-e5115ebd5fc7 fwd="74.105.154.225" dyno= connect= service= status=503 bytes= protocol=https
Do you know fow to solve this?
Thanks a lot!
I already tried some ideas on the web:
change
web: voila --port=$PORT --no-browser --enable_nbextensions=True notebooks/ETC.ipynb
by
worker: voila --port=$PORT --no-browser --enable_nbextensions=True notebooks/ETC.ipynb
The answer can be found here: issue 1047
From 0.3.0, Voila will not listen on all interfaces by default (#926) for security reasons. In the case of Heroku, you need to add --Voila.ip=0.0.0.0 to your command in the Procfile to make it work.
See also: https://github.com/voila-dashboards/voila-heroku

React Application on Heroku

Have a working React App that can run locally using the command:
npm start
However, after deploying on Heroku, i receive an application error message.
The application URL is:
https://earth-weather.herokuapp.com/
The Application Log is as follows:
2021-05-12T08:05:27.430345+00:00 app[web.1]: [34mℹ[39m [90m「wds」[39m: webpack output is served from
2021-05-12T08:05:27.430467+00:00 app[web.1]: [34mℹ[39m [90m「wds」[39m: Content not from webpack is served from /app/public
2021-05-12T08:05:27.430577+00:00 app[web.1]: [34mℹ[39m [90m「wds」[39m: 404s will fallback to /
2021-05-12T08:05:27.430864+00:00 app[web.1]: Starting the development server...
2021-05-12T08:05:27.430866+00:00 app[web.1]:
2021-05-12T08:05:27.554932+00:00 heroku[web.1]: Process exited with status 0
2021-05-12T08:05:27.631647+00:00 heroku[web.1]: State changed from starting to crashed
2021-05-12T08:05:28.728857+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=earth-weather.herokuapp.com request_id=f067160f-79fc-4336-8488-ded7e7eb5ddb fwd="183.90.36.67" dyno= connect= service= status=503 bytes= protocol=https
2021-05-12T08:05:30.511115+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=earth-weather.herokuapp.com request_id=059ee61d-fe00-4a69-9966-61506da73911 fwd="183.90.36.67" dyno= connect= service= status=503 bytes= protocol=https
2021-05-12T08:05:31.219414+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=earth-weather.herokuapp.com request_id=0f53eee2-39a0-4311-b8a3-62cb9ffcde3c fwd="35.185.241.102" dyno= connect= service= status=503 bytes= protocol=http
The forked (public) repository is on GitHub.
Grateful for any assistance that can be rendered. - Benjamin
According to your application logs the line Starting the development server, indicates that the application is running on development mode which shouldn't happen as it is a production environment.
The reason,
According to https://devcenter.heroku.com/changelog-items/370
A Procfile is no longer required to run a Node.js app on Heroku. If no Procfile is present in the root directory of your app during the build process, we will check for a scripts.start entry in your package.json file. If such an entry is present, a default Procfile is generated automatically
$ cat Procfile
web: npm start
In your repository, since you have not specified a Procfile. Heroku automatically generates a Procfile that runs your app on development.
Currently, your react-app is treated as a regular node.js application as the node.js buildpack is used which is automatically inferred due to the presence of package.json in the root.
To fix this, you need to use the create-react-app-buildpack on Heroku.
Refer: https://elements.heroku.com/buildpacks/nhutphuongit/create-react-app-buildpack

Discord.py bot not running on Heroku

I have a simple discord bot made using python and I have deployed it on Heroku. My bot is running perfectly fine locally, but it never comes online. When I open my app, there is an application error.
I used the command: heroku logs --tail --app my-bot and this is the result I get:
2021-04-29T19:39:35.050215+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/" host=telepathy-bot.herokuapp.com request_id=b5acbe5f-ba6f-40d3-a08c-915850f2d27f fwd="103.242.190.234" dyno= connect= service= status=503 bytes= protocol=https
2021-04-29T19:39:35.438642+00:00 heroku[router]: at=error code=H14 desc="No web processes running" method=GET path="/favicon.ico" host=telepathy-bot.herokuapp.com request_id=e5df6b77-b518-45a8-bbae-9e3f0d15126a fwd="103.242.190.234" dyno= connect= service= status=503 bytes= protocol=https
I tried looking at many things. I ran the heroku ps:scale worker=1 and also tried heroku ps:scale web=1 but I have no luck. What should I do?
My Profile is as follows:
heroku ps:scale web=1
heroku ps:scale worker=1
worker: python launcher.py
Please don't use Heroku, use dynox hosting https://client.dynox.us/

Resources