マルチコンテナアプリケーション
原則として、「1 つのコンテナーでは 1 つのことだけを行います。そうするのが一番うまくいきます。 」
理由は色々あるが、とりあえずのメリットを以下に上げる。
- コンテナーを別々にすれば、バージョン管理や更新操作を個別に行うことができます
- データベースとは別にして、API やフロントエンドをスケーリングしやすい
- 1 つのコンテナーをデータベース用としてローカルで利用し、本番環境ではサービスを利用してデータベースを管理することができます。 そうすればデータベースをアプリとともに提供する必要がありません
- プロセスを複数実行するにはプロセスマネージャーが必要です(コンテナーが起動するプロセスは 1 つです)。 そうなるとコンテナーの起動や停止が複雑になります
とりあえず、手動でnetworkを作成、各コンテナを同じネットワーク上に参加させることで、実現できはする・・・
しかし、Docker Desktop
上で別々のコンテナがそれぞれ見えてうざい、
そここで、 docker-compose
を使うことで、まとめて使うことができる
以下のコマンドで作成できる
docker compose -p <プロジェクト名> -f <ファイル名> up -d