2

私は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 に配置されます。

そしてもちろんstack1stack2Nginx の単一コンテナー リバース プロキシの背後に配置されます。

質問

計画を実行する最善の方法は何ですか?

私が理解しているように、それdocker-composeは私の場合には適切なツールではありません。最終的には、nodeJs イメージと Mongo イメージで構成されるスタックのみをビルドできます。しかし、ffmpeg と cron をどう扱うか? スタックを増やす方法は?それらを単一のNginxコンテナの後ろに置くことは可能ですか?

2 番目の方法は、「phusion/baseimage-docker」を使用して、NodeJs、Mongodb、ffmpeg を手動でインストールし、このコンテナーを増やして、それぞれを Nginx revese プロキシの背後に隠すことです。ただし、このアプローチは、Dockerfile を作成するためのベスト プラクティス(コンテナーごとに 1 つのプロセスのみを実行する)に少し違反しています。

それとも他に適切な方法がありますか?このアーキテクチャをどのように実装しますか?

前もって感謝します!

アーチ

4

1 に答える 1