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つのファイルで設定します。

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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Docker Composeとは
- Composeファイルの記述
- 複数サービスアプリのデプロイ
- 環境変数と.envファイル