Tenía un requisito similar de ejecutar una pila LAMP, Mongo DB y mis propios servicios
Docker es una virtualización basada en el sistema operativo, por lo que aísla su contenedor alrededor de un proceso en ejecución, por lo tanto, requiere al menos un proceso que se ejecute en FOREGROUND.
Por lo tanto, proporciona su propio script de inicio como punto de entrada, por lo que su script de inicio se convierte en un script de imagen Docker extendido, en el que puede apilar cualquier número de servicios hasta que SE INICIE AL MENOS UN SERVICIO ANTERIOR, QUE DEMASIADO HACIA EL FINAL
Entonces mi archivo de imagen Docker tiene dos líneas a continuación al final:
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
En mi script ejecuto todos los MySQL, MongoDB, Tomcat, etc. Al final ejecuto mi Apache como un subproceso en primer plano.
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
Esto me permite iniciar todos mis servicios y mantener vivo el contenedor con el último servicio iniciado en primer plano
Espero eso ayude
ACTUALIZACIÓN : desde la última vez que respondí a esta pregunta, han surgido cosas nuevas como Docker compose , que puede ayudarlo a ejecutar cada servicio en su propio contenedor, pero aunarlas como dependencias entre esos servicios, intente saber más sobre docker-compose y úselo, es una forma más elegante a menos que su necesidad no coincida con él.