подскажите пожалуйста как лучше организовать работу микросервисов
Это гооловная боль программистов. Задача девопс предоставить им среду исполнения и организовать сетевую связность. DDD и прочие шаблоны удел программистов.
Стоит ли разворачивать БД в докере, или лучше на хосте, или вообще на другой машине, почему, и какие могут быть подводные камни?
Тут многое зависит от проекта. Если это наколенный сайт, коих подавляющее большинство, можно сильно не заморачиваться и лепить всё на одном хосте. Но есть правило хорошего тона: разносить хранилище данных (СУБД) и среду обработки данных (обычно бэкенд). Потому что бэкенд может скалироваться горизонтально без особых проблем (но программисты и тут не дремлют), с базами такой номер далеко не всегда проходит. Второй момент: обновление кода (бекенда) не должно аффектить данные (СУБД). Но блин проклятые миграции, миграции, миграции.
Поэтому когда есть возможность разделай код и базы по разным хостам, чтобы спать спокойно. Когда совсем хреново с деньгами и бизнес трясётся за каждую копейку (собственно как всегда), смело лепи на одном хосте (но только не в одном контейнере, не уподобляйся некоторым отечественным компаниям в сфере безопасности). И не парься это совершенно не твоя забота. Ты работаешь с тем что есть.