Avevo requisiti simili per l'esecuzione di uno stack LAMP, Mongo DB e i miei servizi
Docker è la virtualizzazione basata su OS, motivo per cui isola il suo contenitore attorno a un processo in esecuzione, quindi richiede almeno un processo in esecuzione in FOREGROUND.
Quindi fornisci il tuo script di avvio come punto di ingresso, quindi lo script di avvio diventa uno script di immagini Docker esteso, in cui puoi impilare un numero qualsiasi di servizi fino a quando viene avviato almeno un servizio in primo piano, che anche verso la fine
Quindi il mio file di immagine Docker ha due righe di seguito alla fine:
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
Nel mio script eseguo tutti MySQL, MongoDB, Tomcat ecc. Alla fine eseguo il mio Apache come thread in primo piano.
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
Ciò mi consente di avviare tutti i miei servizi e mantenere attivo il contenitore con l'ultimo servizio avviato in primo piano
Spero che sia d'aiuto
AGGIORNAMENTO : Dall'ultima volta che ho risposto a questa domanda, sono emerse nuove cose come Docker compose , che può aiutarti a eseguire ogni servizio nel suo contenitore, ma a collegarli tutti insieme come dipendenze tra quei servizi, prova a saperne di più su docker-compose e usalo, è un modo più elegante a meno che il tuo bisogno non corrisponda ad esso.