CodeGym /コース /Docker SELF /アプリケーション用ネットワークとボリュームの設定

アプリケーション用ネットワークとボリュームの設定

Docker SELF
レベル 23 , レッスン 4
使用可能

5.1 ネットワーク設定

よし、もう一度詳しく見てみよう!アプリケーションのネットワークとボリュームを設定してみるね。これでサービス間のやり取りがスムーズになって、データも長期的に保存できるようになるよ。

Dockerネットワークを使うと、コンテナ同士が通信できるようになるよね。今回のアプリでは、フロントエンド、バックエンド、データベースをつなぐためにbridgeネットワークを使うよ。

ネットワークの作成

すでにdocker-compose.ymlファイルでtask-networkを定義してあるよね:

Yaml

networks:
  task-network:
    driver: bridge

ここでの意味は:

  • task-network: これはコンテナ間のやり取りに使うネットワークの名前だよ。
  • driver: bridge: これはネットワークの種類だよ。bridgeネットワークは、同じホスト上のコンテナ間通信に使われる標準タイプだね。

サービスをネットワークに接続する

すべてのサービスをこのネットワークに接続したよね。docker-compose.ymlファイルで確認しよう。各サービスが正しくつながっているかチェックしてみて!

フロントエンドの例:

Yaml

frontend:
  build: ./frontend
  ports:
    - "3000:3000"
  networks:
    - task-network

バックエンドの例:

Yaml

backend:
  build: ./backend
  ports:
    - "5000:5000"
  depends_on:
    - database
  networks:
    - task-network
  environment:
    - DATABASE_URL=postgresql://taskuser:taskpassword@database:5432/taskdb

データベースの例:

Yaml

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 を定義したよ:

Yaml

volumes:
  db-data:

ここで:

  • db-data: PostgreSQLデータベースのデータ保存に使用されるボリュームの名前だよ。

データベースサービスへのボリュームの接続

ボリューム db-data をデータベースサービスに接続することを docker-compose.ymlで設定したんだ。ちゃんとセットされてるか確認しよう:

データベースの例:

Yaml

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ファイルを以下に示します:

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. 1. コンテナの起動:
    Terminal
    
    docker compose up
                
  2. 2. ネットワークの確認:
    • docker network ls コマンドを使って、task-networkネットワークが作成されたか確認してください。
    • docker network inspect task-network コマンドを使って、全てのコンテナがこのネットワークに接続されているか確認してください。
  3. 3. ボリュームの確認:
    • docker volume ls コマンドを使って、db-data ボリュームが作成されたか確認してください。
    • docker volume inspect db-data コマンドを使って、ボリュームの詳細を確認してください。
コメント
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION