0Pricing
Docker & DevOps Fundamentals · レッスン

Composeファイルの記述

サービス、ネットワーク、ボリュームを定義する`docker-compose.yml`のYAML構文を学びます。

「Composeファイルの記述」はCoddyKit上の無料Docker & DevOps Fundamentalsレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDocker & DevOps Fundamentals学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。

Compose ファイル:設計図

Docker Compose ファイルの作成へようこそ。docker-compose.yml ファイルは、複数コンテナの Docker アプリケーションを定義して実行するための設計図です。

YAML 構文を使用して、アプリケーションのサービス、ネットワーク、ボリュームを1つのファイルで設定します。

Composeファイルの記述 — イラスト1

YAML:簡単な復習

Docker Compose ファイルは YAML(YAML Ain't Markup Language)で記述します。YAML は人間にとって読みやすいデータシリアライズ規格です。

  • キーと値のペア:key: value
  • リスト:項目はハイフン(- item)で始めます。
  • インデント:構造と階層を定義するうえで重要です。タブではなくスペースを使用してください。

`version` キー

すべての docker-compose.yml ファイルは version キーから始まります。これは Compose ファイルの形式のバージョンを指定し、Docker Compose がファイルをどのように解釈すべきかを判断できるようにします。

現在のほとんどのアプリケーションでは、'3.8' または同様の '3.x' バージョンが推奨されます。

version: '3.8'

`services` を定義する

services セクションでは、アプリケーションを構成する個々のコンテナ(サービス)を定義します。各サービスは、Web サーバーやデータベースなどのコンポーネントを表します。

services の下に、選択した名前で各サービスを一覧にします。

version: '3.8'
services:
  web:
    # Service configuration goes here
  database:
    # Another service's configuration

サービスの `image` と `ports`

サービスの定義内で、image は使用する Docker イメージを指定します(例:nginx:latest)。ports キーはコンテナのポートをホストのポートに対応付け、外部からアクセスできるようにします。

  • "80:80" はホストのポート80をコンテナのポート80に対応付けます。
version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

サービスの `volumes`

サービス内の volumes キーを使うと、ホストマシンのパスをコンテナにマウントしたり、永続ストレージ用の名前付きボリュームを使用したりできます。

この例では、ローカルディレクトリ ./app をコンテナ内の /usr/src/app にマウントします。

version: '3.8'
services:
  app:
    image: my-node-app
    volumes:
      - ./app:/usr/src/app

サービスの`environment`変数

environmentキーを使用すると、サービスのコンテナに環境変数を渡せます。これは、環境によって変わる可能性がある設定(データベースの接続文字列など)に不可欠です。

変数はキーと値のペアとして記述することも、リスト形式で記述することもできます。

version: '3.8'
services:
  backend:
    image: my-api
    environment:
      - DATABASE_URL=postgres://user:pass@host:5432/db
      - NODE_ENV=development

トップレベルの`networks`と`volumes`

サービス内で定義するだけでなく、docker-compose.ymlファイルのトップレベルでカスタムの名前付きボリュームやネットワークを宣言することもできます。

これにより、データの永続化やコンテナ間通信の定義を、より整理された再利用しやすい形で管理できます。

version: '3.8'
services:
  # ... service definitions ...

networks:
  my_app_network:
    # custom network configuration

volumes:
  db_data:
    # named volume configuration

すべてを組み合わせる

ここまで学んだ内容を組み合わせた簡単な例を見てみましょう。イメージ、ポート、名前付きボリュームを使用して、Webサービスとデータベースサービスを定義しています。

インデントによって構造が作られている点に注目してください。

version: '3.8'
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - web_content:/usr/share/nginx/html
  db:
    image: postgres:13
    environment:
      - POSTGRES_DB=mydb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=secret

volumes:
  web_content:
  db_data:

Composeファイルの確認

次のYAMLスニペットのうち、'myapi:1.0'イメージを使用し、コンテナのポート3000をホストのポート8080に公開する、'api'という名前のDocker Composeサービスを正しく定義しているものはどれでしょうか。

復習:Composeファイルの基本

よくできました!docker-compose.ymlファイルの作成方法の基礎を学びました。

  • versionから始まります。
  • servicesでアプリケーションのコンポーネントを定義します。
  • 各サービスではimageを使用し、portsを公開したり、永続化のためにvolumesを使用したり、environment変数を設定したりできます。
  • トップレベルのnetworksとvolumesで高度な設定を行えます。

このYAML構造を習得することは、複数コンテナのアプリをオーケストレーションするための鍵です。

よくある質問

「Composeファイルの記述」レッスンは無料ですか?

はい。「Composeファイルの記述」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Docker & DevOps Fundamentalsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Docker & DevOps Fundamentalsコースには全4レッスンが含まれています。

「Composeファイルの記述」で何を学びますか?

サービス、ネットワーク、ボリュームを定義する`docker-compose.yml`のYAML構文を学びます。 ブラウザで直接実行するハンズオンコードでDocker & DevOps Fundamentalsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Docker & DevOps Fundamentalsを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDocker & DevOps Fundamentalsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。

「Composeファイルの記述」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDocker & DevOps Fundamentalsレッスンでコードを書いて実行できますか?

はい。すべてのDocker & DevOps Fundamentalsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Docker Composeとは
  2. Composeファイルの記述
  3. 複数サービスアプリのデプロイ
  4. 環境変数と.envファイル
← Docker & DevOps Fundamentalsに戻る