シンプルなマルチサービスアプリケーションの準備
このステップでは、Docker サービスの再起動を練習するためにこの実験全体で使用するシンプルなマルチサービスアプリケーションを準備します。このアプリケーションは、Web サービスとデータベースサービスの 2 つのサービスで構成されています。これらのサービスは Docker Compose ファイルを使用して定義します。
まず、Docker Compose をインストールする必要があります。LabEx VM 環境にはプリインストールされていないため、ダウンロードしてインストールします。
sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
最初のコマンドは、公式 GitHub リポジトリから Docker Compose バイナリをダウンロードし、/usr/local/bin/docker-compose
に保存します。$(uname -s)
と$(uname -m)
の部分は、オペレーティングシステムとアーキテクチャを自動検出して正しいバイナリをダウンロードします。2 番目のコマンドは、ダウンロードしたファイルを実行可能にします。
次に、Docker Compose のバージョンを確認してインストールを検証します。
docker-compose --version
Docker Compose version v2.20.2
のような出力が表示されるはずです。
次に、この実験の作業ディレクトリである~/project
ディレクトリに移動します。
cd ~/project
ここで、マルチサービスアプリケーションを定義するdocker-compose.yml
ファイルを作成します。このファイルには、サービス、そのイメージ、および必要な設定が指定されます。
nano docker-compose.yml
以下の内容をdocker-compose.yml
ファイルに貼り付けます:
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_PASSWORD: mysecretpassword
このdocker-compose.yml
ファイルでは:
version: '3.8'
は Docker Compose ファイルフォーマットのバージョンを指定します
services:
はアプリケーション内の異なるサービスを定義します
web
サービスはnginx:latest
イメージを使用し、ホストのポート 80 をコンテナのポート 80 にマッピングし、db
サービスに依存しています。これはdb
サービスがweb
サービスの前に起動されることを意味します
db
サービスはpostgres:latest
イメージを使用し、PostgreSQL イメージで必須のPOSTGRES_PASSWORD
環境変数を設定します
ファイルを保存し、nano エディタを終了します(Ctrl + X
、次にY
、そしてEnter
を押します)。
サービスを起動する前に、必要な Docker イメージをプルする必要があります。
docker pull nginx:latest
docker pull postgres:latest
これらのコマンドは、Docker Hub からnginx:latest
とpostgres:latest
イメージをダウンロードします。
最後に、docker-compose.yml
ファイルで定義されたサービスを起動します。
docker-compose up -d
docker-compose up -d
コマンドは、サービスをビルド、作成、バックグラウンド(デタッチドモード)で起動します。
以下のコマンドを使用して、実行中のサービスの状態を確認できます:
docker-compose ps
web
とdb
の両サービスが実行中であることを示す出力が表示されるはずです。