まだ理解の途中ですが、ポートフォリオアプリの開発環境をDockerを用いて構成したので、現状での理解度を記したいと思います。
開発環境構成図
Rails
rubyのフレームワーク、MVCのやり取りを行う。
MySQL
OSSのRDS、railsのDB情報を保存する。
Supervisor
プロセス管理/デーモン化のツール。
「dockerコンテナは、プロセスがフォアグランドで動いていないと終了する」という制約がある事から、Supervisorがフォアグランドで動作するように見せることで、コンテナの停止を防ぐ。
また、Webサーバー・アプリケーションサーバーのプロセス管理を行う。
Unicorn
(これが特に怪しい。)
RailsとWebサーバーのやり取りを仲介するミドルウェア。送信されてきた多数のリクエストを捌き、分散してアプリケーションに伝達するという機能を持つ。
リクエスト毎に、マスタープロセスをフォークしたワーカープロセスを生成し、一定時間が経つとマスタープロセスによって破棄される。ワーカープロセスの生成・破棄をUnicornが停止するまで繰り返す。
Nginx
Webサーバーの役割を担うミドルウェア。HTTPリクエストとレスポンスを管理し、confファイルでhttpやserverの設定を行うことで、複数のヴァーチャルサーバーを作成する事ができる。