5.1 ネットワーク設定
よし、もう一度詳しく見てみよう!アプリケーションのネットワークとボリュームを設定してみるね。これでサービス間のやり取りがスムーズになって、データも長期的に保存できるようになるよ。
Dockerネットワークを使うと、コンテナ同士が通信できるようになるよね。今回のアプリでは、フロントエンド、バックエンド、データベースをつなぐためにbridgeネットワークを使うよ。
ネットワークの作成
すでにdocker-compose.ymlファイルでtask-networkを定義してあるよね:
networks:
task-network:
driver: bridge
ここでの意味は:
- task-network: これはコンテナ間のやり取りに使うネットワークの名前だよ。
- driver:
bridge: これはネットワークの種類だよ。bridgeネットワークは、同じホスト上のコンテナ間通信に使われる標準タイプだね。
サービスをネットワークに接続する
すべてのサービスをこのネットワークに接続したよね。docker-compose.ymlファイルで確認しよう。各サービスが正しくつながっているかチェックしてみて!
フロントエンドの例:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
バックエンドの例:
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
データベースの例:
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
5.2 ボリュームの設定
Dockerボリュームを使えば、ホストシステム上でコンテナのデータを保存でき、長期間の保存が可能になるんだ。今回のアプリでは、PostgreSQLデータベースのデータ保存にボリュームを使うぜ。
ボリュームの作成
既にファイルcompose.yaml でボリューム db-data を定義したよ:
volumes:
db-data:
ここで:
-
db-data: PostgreSQLデータベースのデータ保存に使用されるボリュームの名前だよ。
データベースサービスへのボリュームの接続
ボリューム db-data をデータベースサービスに接続することを docker-compose.ymlで設定したんだ。ちゃんとセットされてるか確認しよう:
データベースの例:
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
ここで:
-
volumes: コンテナにどのボリュームを接続するかを定義する。 -
db-data:/var/lib/postgresql/data: ボリュームdb-dataをコンテナ内のディレクトリ/var/lib/postgresql/dataにリンクする。このディレクトリは、PostgreSQLがデータを保存するために使用するところなんだ。
5.3 完全なファイル compose.yaml
わかりやすさと全体像を示すために、ネットワークとボリューム設定を含む完全なcompose.yamlファイルを以下に示します:
version: '3'
services:
frontend:
build: ./frontend
ports:
- "3000:3000"
networks:
- task-network
backend:
build: ./backend
ports:
- "5000:5000"
depends_on:
- database
networks:
- task-network
environment:
- DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb
database:
image: postgres:13
environment:
- POSTGRES_DB=taskdb
- POSTGRES_USER=taskuser
- POSTGRES_PASSWORD=taskpassword
networks:
- task-network
volumes:
- db-data:/var/lib/postgresql/data
networks:
task-network:
driver: bridge
volumes:
db-data:
ネットワークとボリュームの設定確認
ネットワークとボリュームを設定した後、すべてが正しく設定され、正常に動作していることを確認してください:
- 1. コンテナの起動:
Terminal
docker compose up - 2. ネットワークの確認:
-
docker network lsコマンドを使って、task-networkネットワークが作成されたか確認してください。 -
docker network inspect task-networkコマンドを使って、全てのコンテナがこのネットワークに接続されているか確認してください。
-
- 3. ボリュームの確認:
-
docker volume lsコマンドを使って、db-dataボリュームが作成されたか確認してください。 -
docker volume inspect db-dataコマンドを使って、ボリュームの詳細を確認してください。
-
GO TO FULL VERSION