LAMPスタック、Mongo DB、および自分のサービスを実行するという同様の要件がありました
DockerはOSベースの仮想化であるため、実行中のプロセスの周囲でコンテナーを分離するため、FOREGROUNDで実行されているプロセスが少なくとも1つ必要です。
したがって、独自の起動スクリプトをエントリポイントとして提供することで、起動スクリプトが拡張Dockerイメージスクリプトになり、少なくとも1つのフォアグラウンドサービスが開始されていて、終わりに近づいている限り、任意の数のサービスをスタックできます。
したがって、私のDockerイメージファイルの最後には2行あります。
COPY myStartupScript.sh /usr/local/myscripts/myStartupScript.sh
CMD ["/bin/bash", "/usr/local/myscripts/myStartupScript.sh"]
私のスクリプトでは、MySQL、MongoDB、Tomcatなどをすべて実行します。最後に、Apacheをフォアグラウンドスレッドとして実行します。
source /etc/apache2/envvars
/usr/sbin/apache2 -DFOREGROUND
これにより、すべてのサービスを開始し、最後のサービスがフォアグラウンドで開始された状態でコンテナーを存続させることができます
それが役に立てば幸い
更新:私がこの質問に最後に回答して以来、Docker composeのような新しいものが登場しました。これにより、各サービスを独自のコンテナーで実行しながら、それらすべてをそれらのサービス間の依存関係としてバインドし、docker-composeとそれを使用してください、あなたのニーズがそれに一致しない限り、それはよりエレガントな方法です。