サンプルスタックのデプロイ
このステップでは、Docker Compose を使用してサンプルスタックをデプロイする方法を学びます。Docker Compose は、マルチコンテナの Docker アプリケーションを定義して実行するためのツールです。Compose を使用すると、YAML ファイルを使ってアプリケーションのサービスを構成できます。そして、1 つのコマンドで構成からすべてのサービスを作成して起動できます。
LabEx 環境には Docker Compose が事前にインストールされていないため、まずはインストールする必要があります。インストールされている Docker バージョンと互換性のある Docker Compose バージョン 1.29.2 をインストールします。
まず、Docker Compose のバイナリをダウンロードします。
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
このコマンドは、公式の GitHub リポジトリから Docker Compose のバイナリをダウンロードし、/usr/local/bin/docker-compose
に保存します。$(uname -s)
と $(uname -m)
の部分は、オペレーティングシステムとアーキテクチャを自動的に検出します。
次に、バイナリに実行権限を付与します。
sudo chmod +x /usr/local/bin/docker-compose
このコマンドは、ダウンロードしたファイルを実行可能にします。
これで、Docker Compose のバージョンを確認することでインストールを検証します。
docker-compose --version
docker-compose version 1.29.2, build 5becea4c
のような出力が表示されるはずです。
Docker Compose がインストールされたので、スタックを定義するためのシンプルな Docker Compose ファイルを作成しましょう。~/project
ディレクトリに docker-compose.yml
という名前のファイルを作成します。
nano
エディタを使ってファイルを作成して編集します。
nano ~/project/docker-compose.yml
次の内容を docker-compose.yml
ファイルに貼り付けます。
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
app:
image: alpine:latest
command: echo "Hello from Alpine"
この docker-compose.yml
ファイルは 2 つのサービスを定義しています。
web
: nginx:latest
イメージを使用し、ホストのポート 80 をコンテナ内のポート 80 にマッピングします。
app
: alpine:latest
イメージを使用し、単純な echo
コマンドを実行します。
Ctrl + S
を押してファイルを保存し、Ctrl + X
を押してエディタを終了します。
スタックをデプロイする前に、必要なイメージを取得しましょう。Docker Compose はデプロイ時に自動的にイメージを取得できますが、事前に明示的に取得すると役立つことがあります。
nginx:latest
イメージを取得します。
docker pull nginx:latest
alpine:latest
イメージを取得します。
docker pull alpine:latest
これで、docker-compose up
コマンドを使用してスタックをデプロイします。-d
フラグを使用すると、コンテナがデタッチドモード(バックグラウンド)で実行されます。
docker-compose.yml
ファイルを作成した ~/project
ディレクトリに移動します。
cd ~/project
そして、コマンドを実行します。
docker-compose up -d
このコマンドは docker-compose.yml
ファイルを読み取り、定義されたサービスを作成して起動します。web
と app
サービスの作成と起動を示す出力が表示されるはずです。
サービスが実行されていることを確認するには、実行中のコンテナを一覧表示できます。
docker ps
web
サービス(nginx
ベース)用のコンテナと app
サービス(alpine
ベース)用のコンテナの 2 つのコンテナが実行されているのが表示されるはずです。