2つのCMDコマンドを実行できるかどうかを尋ねたいです。 2つのCMDコマンドを入力すると、最後のコマンドのみが実行されます。私が試したことは次のとおりです。
CMD bash /start-script.sh && /usr/bin/supervisord -c /etc/supervisord.conf
ただし、これら2つのサービスは実行されません。
ここは別にあります。CMD
CMD ["/start-script.sh"]
ENTRYPOINT [ "/entrypoint.sh" ]
CMD [ "/usr/bin/supervisord", "-c", "/etc/supervisord.conf" ]
答え1
あなたのアプローチはDockerのベストプラクティスから少し離れているので、ここで何をしたいのか考えてみましょう。
簡単に言えば、Dockerのベストプラクティスは、2つのアプリケーションを起動せず、Dockerコンテナで1つのアプリケーションのみを起動する必要があることです。このアドバイスは、アプリケーションが終了するとdockerがコンテナを停止するために意味があります。 1つ以上の場合、基本的に壊れます。
しかし、...助けることができるいくつかの解決策があります。
簡単です。 2つのアプリケーションを起動する単一のシェルスクリプトを起動し、無限ループに入ります。
複数のアプリケーション/サービスを並列に処理できるSupervisordなどのソリューションを使用してください。
両方のソリューションのドキュメントはここにあります。https://docs.docker.com/config/containers/multi-service_container/
個人的に好むのは、共有ボリュームとは別のDockerコンテナを使用することです。 (まだdocker-composeを使用して互いに貼り付けることができます。)これにより、すべてのアプリケーションを完全に制御でき、非常にシンプルで簡単です。