Как лучше организовать структуру сервера на aws с docker контейнерами?
Имхо - для начала каждую сущность оборачиваем в контейнер, заставляем уметь работать или в единственном экземпляре, или в режиме нескольких инстансов. То есть, к API должен быть какой-то load balancer, веб сервер тоже с несколькими воркерами надо дружить, база тоже по мануалам масштабируется при появлении нескольких контейнеров.
Когда вся система готова масштабироваться, запиливаем потребный для текущей нагрузки сетап. Тут преимущество докера - в легкости миграции с одной машинки на класер: можно начать с одного инстанса где все контейнера крутятся, до вынесения любого компонента на любое количество экземпляров.
Как то так.
Зачем Вам докер в принципе при наличии всего 1 инстанса?как можно поступить ещё? 
Вынести базу на отдельный инстанс. Завернуть в докер и апи и сайт. В зависимости от нагрузки, просить/отдавать еще инстансы под докер.