私はDockerが初めてです。
以下に添付されている私のスキームを見ていただけますか?
計画
私が望むのは、現在のソフトウェアが搭載された、分離されたドッカー コンテナーを多数持つことができるようにすることです。
- NodeJ (npm、pm2、grunt-cli など)
- MongoDb
- その他のソフトウェア (cron、ffmpeg など)
すべての分離されたコンテナーは、アプリケーション コードを含む同じボリュームにリンクされていますが、異なる ENV 変数 (expressJS ポート、データベース名など) で開始されています。
たとえば、 と の 2 つの分離されたコンテナーがstack1
ありstack2
ます。
どちらも、ホスト マシンの /home/user/app_code/ (ボリューム マウント) にあるアプリ コードで同じボリュームを使用します。
内部の NodeJSstack1
は 3001 ポートで開始され、/home/user/db1 (ボリューム マウント) で DB を使用する mongoDB サーバーに接続され、マルチメディア専用のストレージが /home/user/storage1 にあります。
内部の NodeJSstack2
は 3002 ポートで開始され、/home/user/db2 (ボリューム マウント) で DB を使用する mongoDB サーバーに接続され、マルチメディア専用のストレージが /home/user/storage2 に配置されます。
そしてもちろんstack1
、stack2
Nginx の単一コンテナー リバース プロキシの背後に配置されます。
質問
計画を実行する最善の方法は何ですか?
私が理解しているように、それdocker-compose
は私の場合には適切なツールではありません。最終的には、nodeJs イメージと Mongo イメージで構成されるスタックのみをビルドできます。しかし、ffmpeg と cron をどう扱うか? スタックを増やす方法は?それらを単一のNginxコンテナの後ろに置くことは可能ですか?
2 番目の方法は、「phusion/baseimage-docker」を使用して、NodeJs、Mongodb、ffmpeg を手動でインストールし、このコンテナーを増やして、それぞれを Nginx revese プロキシの背後に隠すことです。ただし、このアプローチは、Dockerfile を作成するためのベスト プラクティス(コンテナーごとに 1 つのプロセスのみを実行する)に少し違反しています。
それとも他に適切な方法がありますか?このアーキテクチャをどのように実装しますか?
前もって感謝します!