502 bad gateway with Sinatra and AWS Beanstalk Docker deployment

November 30, 2015

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’ doSuccess"

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