This one had me scratching my head for a while so I thought I’d write up the solution.

Usually, the 502 error signifies that you haven’t exposed the appropriate port in your Dockerfile - i.e. the Downstream server is complaining that it can’t connect to the upstream server. However, in this instance I had exposed the port for my Sinatra app. I noticed in the AWS logs that the Docker container was starting correctly and listening on tcp://localhost:3000 and this is where the issue is - you need to bind to rather than localhost.

 # app.rb...

 require ‘sinatra'

 set :bind, ‘’ # THIS IS REQUIRED!

 get ‘/hello’ do



Just add the bind command above and the 502 issue will disappear. Hope this helps someone.