Miałem podobne wymaganie, aby uruchomić stos LAMP, Mongo DB i własne usługi
Docker to wirtualizacja oparta na systemie operacyjnym, dlatego izoluje swój kontener wokół działającego procesu, dlatego wymaga co najmniej jednego procesu działającego w FOREGROUND.
Więc dostarczasz swój własny skrypt startowy jako punkt wejścia, w ten sposób twój skrypt startowy staje się rozszerzonym skryptem obrazu Dockera, w którym możesz układać dowolną liczbę usług, o ile ROZPOCZĘŁA SIĘ CO NAJMNIEJ JEDNA WCZESNA USŁUGA, KTÓRA ZBYT KU KOŃCA
Więc mój plik obrazu Dockera ma dwie linie poniżej na samym końcu:
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
W moim skrypcie uruchamiam wszystkie MySQL, MongoDB, Tomcat itp. Na koniec uruchamiam Apache jako wątek pierwszego planu.
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
Dzięki temu mogę uruchomić wszystkie moje usługi i utrzymać kontener przy życiu, przy czym ostatnia usługa zaczyna być na pierwszym planie
Mam nadzieję, że to pomoże
AKTUALIZACJA : Odkąd ostatnio odpowiedziałem na to pytanie, pojawiły się nowe rzeczy, takie jak Docker Compose , który może pomóc w uruchamianiu każdej usługi w osobnym kontenerze, a jednocześnie powiązać je wszystkie razem jako zależności między tymi usługami, spróbuj dowiedzieć się więcej o docker-compose i użyj go, jest bardziej elegancki, chyba że twoja potrzeba mu nie pasuje.