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