Docker-Composeについて
概要
Docker-Composeは、複数のコンテナを同時に実行する際に非常に便利なツール。
複数のdocker runコマンドを使う代わりに、YAML形式のファイルにコンテナの設定をまとめて記述することで、簡単に管理・実行ができる。
Docker-Composeのメリット
シンプルな定義: YAML形式で直感的にコンテナ設定が記述できる。
効率的な管理: 複数のコンテナの起動や停止を1つのコマンドで操作できる。
依存関係の管理: コンテナ間の依存関係を簡単に定義できる。
Docker Composeファイルの記述例()
version: "3" # docker-composeのバージョン指定
services:
web:
image: "nginx:latest" # 使用するDockerイメージ
ports:
- "8080:80" # ホスト側のポート:コンテナ側のポート
volumes:
- "./html:/usr/share/nginx/html" # ホスト側パス:コンテナ側パス
environment:
NGINX_HOST: localhost # 環境変数設定
app:
build: ./app # Dockerfileのパス指定
ports:
- "3000:3000"
volumes:
- "./src:/app/src"
environment:
NODE_ENV: production
depends_on:
- db # 依存関係を定義(この場合、dbが起動してからappが起動)
db:
image: "postgres:13"
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Web、API、DBの箇所はコンテナ名を定義しています。
各項目の説明
- version: docker-compose.ymlのバージョン指定。一般的には"3"または"3.x"を使用。
- services: 複数のコンテナ(サービス)を定義するセクション。
- image: Docker Hubなどのリポジトリから取得するイメージ名を指定。
- build: ローカルにあるDockerfileを使用してイメージをビルドするためのパス指定。
- ports: ホストとコンテナのポートをマッピング(例: "ホスト側ポート:コンテナ側ポート")。
- volumes: ホストのディレクトリとコンテナのディレクトリを同期。
- environment: コンテナ内で使用する環境変数を定義。
- depends_on: 他のサービス(コンテナ)が起動してからこのサービスが起動するように依存関係を定義。
※volumesの解説は後日個別でまとめたい・・・
エディタでの記述(ターミナル)
code .
viで慣れてない方はvisual studio codeなどでも記述できるので試してみてください。
Docker-Composeの基本コマンド
Docker Composeを使用する際の基本的なコマンドを以下に羅列。
イメージ一覧表示
docker-compose images
使用しているイメージの一覧を確認
イメージ作成
docker-compose build
Dockerfileをもとにイメージをビルド
サービス実行
docker-compose up
サービスを実行。-dオプションを付けるとバックグラウンドで実行可能。
例: docker-compose up -d
サービス停止・削除
docker-compose down
起動しているコンテナを停止し、ネットワークやボリュームなどのリソースも削除。
サービス起動
docker-compose start
停止しているコンテナを起動。
サービス停止
docker-compose stop
コンテナを停止。
サービス再起動
docker-compose restart
コンテナを再起動します。
まとめ
とりあえず、まとめたことを羅列してみました。
随時、追記していこうとおもいます。