開発環境を整えるとき、複数のコンテナ(Webサーバー、DB、キャッシュサーバーなど)を手動で立ち上げるのはとても手間です。そんな時に活躍するのが「Docker Compose」です。特にその中でも使いこなしたいコマンドが「docker-compose up
」。
このコマンドを使えば、複数のコンテナを一括で起動・連携させることができ、開発の効率を飛躍的に向上させることが可能です。
本記事では、「docker-compose up
」の基本的な使い方から、便利なオプション、トラブル時の対処法まで、初めての方にもわかりやすく丁寧に解説していきます。
Docker Composeとは?
まず前提として、Docker Composeとは何かを理解しておきましょう。
Docker Composeは、複数のコンテナを一括管理するためのツールです。たとえば、Webアプリケーションの開発においては以下のような構成になることが一般的です。
- NginxやApacheなどのWebサーバー
- Node.jsやPythonなどのアプリケーションサーバー
- MySQLやPostgreSQLなどのデータベース
このように複数のコンテナを協調して動作させる場合、個別に起動・設定するのは非常に面倒です。Docker Composeを使えば、これらの情報を一つのdocker-compose.yml
ファイルにまとめて管理できます。
docker-compose upとは?その役割と基本動作
docker-compose up
は、Composeファイルで定義されたすべてのサービス(コンテナ)を一括で起動するためのコマンドです。
docker-compose up
このコマンドを実行すると以下の処理が自動で行われます:
docker-compose.yml
ファイルを読み込む- 必要なDockerイメージをビルドまたは取得する
- 各サービスを定義通りに起動する
- それぞれのログを表示する
非常にシンプルですが、開発環境を一発で立ち上げられるため、作業の効率化に貢献します。
docker-compose.ymlの基本構成と例
以下は、Webアプリケーションとデータベースを構成する簡単な例です。
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
このようなdocker-compose.yml
ファイルを作成して、同じディレクトリでdocker-compose up
を実行すると、NginxとMySQLの2つのコンテナが同時に起動します。
よく使うオプションまとめ
docker-compose up
はシンプルなコマンドですが、オプションを組み合わせることでさらに便利に使えます。
-d(バックグラウンド実行)
docker-compose up -d
通常は標準出力にログが表示され続けますが、-d
オプションを使うとバックグラウンドで実行されます。サーバーとして常駐させたいときに便利です。
–build(イメージを再ビルド)
docker-compose up --build
コンテナの構成が変更された場合、このオプションを使うことで再ビルドを強制できます。
–force-recreate(コンテナを強制的に再作成)
docker-compose up --force-recreate
既存のコンテナがあっても強制的に新しく作り直します。動作が不安定なときに使用されることがあります。
トラブル対策:エラーが出たらどうする?
docker-compose up
でうまく起動できないときの対処法も押さえておきましょう。
1. ポート競合の確認
エラーメッセージに「port is already allocated」などが出た場合、同じポート番号を使って他のサービスが起動している可能性があります。使用ポートを変更するか、既存のプロセスを停止してください。
2. イメージの取得失敗
pull access denied
などのエラーが出たら、指定したイメージが存在しないか、非公開の可能性があります。イメージ名を再確認し、認証が必要ならDocker Hubのログインを行いましょう。
docker login
3. 環境変数が不足している
環境変数(MYSQL_ROOT_PASSWORD
など)が不足している場合も起動に失敗します。.env
ファイルを用意して変数を定義するのもおすすめです。
docker-compose upの停止と削除
起動したコンテナを停止するには以下のコマンドを使います。
docker-compose down
このコマンドはすべてのコンテナを停止し、ネットワークやボリュームなども削除します。設定変更のあとに一度クリーンにしたい場合にも便利です。
もしボリュームを保持したい場合は、--volumes
オプションを外して使うことも可能です。
便利な活用例:開発と本番でファイルを切り替える
docker-compose
は、開発環境と本番環境で設定を切り替える運用も可能です。たとえば以下のように複数のYAMLファイルを使い分けます。
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up -d
このように複数ファイルを合成して、必要な構成だけ上書きする柔軟な使い方もできます。
まとめ
docker-compose up
は、複数のコンテナを一括で起動・管理できる非常に便利なコマンドです。開発環境を構築するとき、毎回個別にコンテナを起動する必要がなくなり、時間の短縮と構成の再現性を高めることができます。
よく使うオプションやトラブル対処法を押さえておけば、初めての方でも安心して使いこなすことができます。開発現場での効率化のためにも、ぜひ習得しておきたいコマンドの一つです。