Rollen wir die Katze mal von hinten auf: bei Docker hast du einen Overhead im I/O und Netzwerkbereich. Die Programme sind abschließend alles nur Prozesse, die durch Kernelmechaniken (C-Groups) von einander getrennt sind.
Insofern kannst du Docker auch auf einem VPS 200 einsetzen - das erfordert keine große Leistung. Die Wahl es Servers sollte abhängig sein von den Programmen (und deren Anforderungen), die im Container laufen.
Ich gehe mal davon aus, dass du den nginx auch zur TLS Terminierung nutzen wirst. Das kann man in einem Container machen, allerdings musst du bei Configänderungen und dem Hinzufügen neuer Seiten den Container immer wieder neu aufbauen - je Nachdem, mit welchen Methoden du ihn konfigurierst.
Hier kann man effizienter arbeiten mit einem nativen nginx, oder sogar Caddy[1] oder traefik[2] - Letzteres hat den Vorteil der automatischen Konfiguration über Docker. Traefik kennt die Container und kann sie so ans Netz bringen.
Caddy sorgt sich selbst um Let's Encrypt Zertifikate und die Konfiguration braucht nur zwei bis drei Zeilen je Domain / Dienst.
Bei Datenbanken ist die Frage: willst du dich mit persistent Storage abmühen, willst du den Datenbank Server immer wieder abreißen und neu aufziehen können - oder brauchst du einen Fels in der Brandung. Da stellt sich die Frage wie du persönlich deinen Datenbankserver administrieren möchtest. Ich persönlich halte meine Datenbanken von Docker fern.
Mit: auf die selbe Datenbank meinst du sicherlich auf den selben Datenbankserver in unterschiedlichen Datenbanken? Ja, bitte. Wenn du je Wordpress einen Datenbankserver hast, hast du am Ende wirklich Overhead. Und ein Datenbankserver ist besser im Backup als 10 Datenbankserver ![]()