docker compose config コマンドで compose ファイルを検証・表示する方法

DockerBeginner
オンラインで実践に進む

はじめに

この実験では、docker-compose configコマンドを使用して Docker Compose ファイルを検証および表示する方法を学びます。まず Docker Compose をインストールし、基本的な compose ファイルを作成することから始めます。

その後、docker-compose configコマンドを使用して compose ファイルの構文を検証し、YAML と JSON 形式で解決された設定を表示し、サービス名やイメージ名などの特定の情報を抽出します。このチャレンジを通じて、Docker Compose ファイルを効果的に扱うための重要なスキルを習得できます。

基本的な compose ファイルの検証

このステップでは、基本的な Docker Compose ファイルを検証する方法を学びます。開始前に、この環境には Docker Compose がプリインストールされていないため、インストールする必要があります。

まず、Docker Compose バイナリをダウンロードします。安定版で広く使用されているバージョン 1.29.2 をダウンロードします。

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 ~/project/docker-compose.yml

以下の内容をファイルに追加します:

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

これは非常に基本的な Docker Compose ファイルです。webという名前の単一サービスを定義しており、nginx:latestイメージを使用し、ホストのポート 80 をコンテナのポート 80 にマッピングします。

ファイルを保存して nano エディタを終了します(Ctrl + X、次にY、そしてEnterを押します)。

Compose ファイルを実行する前に、構文を検証するのが良い習慣です。Docker Compose はこのためのconfigコマンドを提供しています。

docker-compose config

docker-compose.ymlファイルの構文が正しければ、このコマンドは解決された設定を YAML 形式で出力します。構文エラーがある場合は、問題を示すエラーメッセージが表示されます。これにより、サービスをビルドまたは実行しようとする前に早期にエラーを検出できます。

解決済み設定を YAML 形式で表示

前のステップでは、docker-compose configコマンドを使用してdocker-compose.ymlファイルの構文を検証しました。デフォルトでは、このコマンドは解決された設定を YAML 形式で出力します。これは、Docker Compose が使用する最終的な設定(デフォルト値や複数の compose ファイルからのマージを含む)を確認するのに役立ちます。

再度コマンドを実行して出力を確認しましょう。docker-compose.ymlファイルを作成した~/projectディレクトリにいることを確認してください。

cd ~/project
docker-compose config

次のような出力が表示されるはずです:

services:
  web:
    build:
      context: /home/labex/project
    image: nginx:latest
    ports:
      - published: 80
        target: 80
version: "3.8"

出力には、context/home/labex/projectに設定されたbuildセクションが含まれていることに注目してください。docker-compose.ymlで明示的にbuildセクションを定義していなくても、Docker Compose は compose ファイルを含むディレクトリをデフォルトのビルドコンテキストとして追加します。これはdocker-compose configがデフォルトを含む解決済みの設定を表示する方法の一例です。

YAML 形式で解決された設定を表示することは、デバッグや Docker Compose がファイルをどのように解釈するかを正確に理解するのに役立ちます。

解決済み設定を JSON 形式で表示

前のステップでは、docker-compose configがデフォルトで YAML 形式で解決された設定を出力する方法を見ました。場合によっては、特に JSON を処理するツールやスクリプトを使用している場合、設定を JSON 形式で表示すると便利です。

docker-compose configコマンドには出力形式を指定できる--formatフラグがあります。JSON 形式で出力するには、--format jsonを使用します。

~/projectディレクトリにいることを確認してください。

cd ~/project
docker-compose config --format json

解決された設定が JSON 形式でコンソールに表示されるはずです。出力は次のようになります(正確なフォーマットは若干異なる場合があります):

{
  "services": {
    "web": {
      "build": {
        "context": "/home/labex/project"
      },
      "image": "nginx:latest",
      "ports": [
        {
          "published": 80,
          "target": 80
        }
      ]
    }
  },
  "version": "3.8"
}

この出力を前のステップの YAML 出力と比較すると、同じ設定が異なるデータ形式で表現されていることがわかります。どちらの形式も必要に応じて有用です。

設定を JSON 形式で表示することは、Docker Compose を他のツールと統合する場合や、設定をプログラムで処理する場合に特に役立ちます。

サービス名のみを表示

このステップでは、docker-compose configコマンドを使用して、compose ファイルで定義されたサービスの名前のみを表示する方法を学びます。これは、詳細な設定情報なしにサービスの簡易リストが必要な場合に便利です。

docker-compose configコマンドには--servicesフラグがあり、まさにこの機能を提供します。このフラグを使用すると、compose ファイルを解析し、サービスの名前のみを 1 行ずつ出力します。

~/projectディレクトリにいることを確認してください。

cd ~/project
docker-compose config --services

現在のdocker-compose.ymlファイルにはwebという 1 つのサービスしか定義されていないため、このコマンドの出力は次のようになります:

web

compose ファイルに複数のサービスが定義されている場合、各サービス名は新しい行に表示されます。例えば、webdbappというサービスがある場合、出力は次のようになります:

web
db
app

このフラグは、Docker Compose プロジェクトで定義されたサービスを素早くリストアップする便利な方法です。

イメージ名のみを表示

この最終ステップでは、docker-compose configコマンドを使用して、compose ファイルで定義されたサービスが使用するイメージ名のみを表示する方法を学びます。これはプロジェクトが依存するイメージを素早く確認するのに便利です。

docker-compose configコマンドには--imagesフラグがあり、この機能を提供します。このフラグを使用すると、compose ファイルを解析し、イメージ名のみを 1 行ずつ出力します。

~/projectディレクトリにいることを確認してください。

cd ~/project
docker-compose config --images

現在のdocker-compose.ymlファイルではwebサービスにnginx:latestイメージを使用しているため、このコマンドの出力は次のようになります:

nginx:latest

異なるイメージを使用する複数のサービスがある場合、各イメージ名は新しい行に表示されます。例えば、nginx:latestmysql:5.7python:3.9を使用するサービスがある場合、出力は次のようになります:

nginx:latest
mysql:5.7
python:3.9

このフラグは、Docker Compose プロジェクトで必要なイメージを簡単に把握する方法を提供します。

まとめ

この実験では、以下の内容を学習しました:

  1. Docker Compose をバイナリダウンロードしてインストールし、実行権限を付与する方法
  2. バージョン確認によるインストールの検証方法
  3. Nginx イメージを使用した基本的な Web サービスを定義するdocker-compose.ymlファイルの作成
  4. docker-compose configコマンドを使用した compose ファイルの構文検証と、デプロイ前の正しいフォーマット確認

これにより、Docker Compose の基本的な使用方法と設定ファイルの検証プロセスを理解することができました。