It looks like it is trying to make a TCP connection to the application, i.e. using "port" based health checks. The TCP connection is failing, so the health check fails. Does this happen after your app has been running successfully for a while? or does this happen right when you push?
As far as port 8080, that is because the app is being told to listen on port 8080 inside the container & health checks are run internally, also inside the container. That is how it uses localhost:8080 to talk to your app.
For what it's worth, using HTTP based health checks is generally recommended. They tend to more accurately describe the health of your application. That said, if it can't even pass the port based health check, it won't pass an HTTP health check.
https://docs.pivotal.io/platform/application-service/2-8/devguide/deploy-apps/healthchecks.html#setting_health_checks
Double check that you have not altered the Staticfile buildpack's Nginx configuration. The default configuration should tell it to listen on port 8080.
Hope that helps!