Ho una classica webapp Java. È composto da un database (PostgreSQL), un servlet container (Tomcat) e il mio codice (distribuito su Tomcat come un file * .war).
Voglio comprarlo / distribuirlo usando Docker (principalmente per i test per ora), ma non sono sicuro quale sarebbe il modo migliore per "mapparlo".
La mia idea iniziale era di avere un'app-in-a-box - definire un contenitore con Java, Postgres e Tomcat, esponendo solo la porta http.
Un'ulteriore lettura dei documenti Docker mostra che questo, sebbene possibile (installare ed eseguire supervisord come singolo processo in primo piano, farlo avviare sia Postgres che Tomcat) probabilmente non è l'uso previsto. Seguendo lo spirito delle esercitazioni, probabilmente dovrei creare un contenitore per Postgres, un altro per Tomcat e un contenitore di dati per contenere il codice dell'applicazione (i miei file * .war) e il database. Ciò significherebbe più di 3 contenitori (i file db e * .war condividono lo stesso contenitore di dati?)
Qual è la pratica comune qui?
Poiché non ho esperienza precedente con Docker, quali sono le insidie che posso aspettarmi da ciascun approccio?
C'è qualche altro approccio che mi manca?