Docker Compose超入門 初心者でもすぐに使える基礎ガイド
投稿更新日: 2025/6/6

Dockerを使うとアプリの環境を簡単に構築出来ますが、複数のコンテナを扱う場合、コマンドが増えて面倒になることがあります。そんなときに役立つのが Docker Compose です!
本記事では、Docker Composeの基本から、よく使うコマンド、実際にNginxとExpress.jsを組み合わせたアプリの作成まで、ステップバイステップで解説します。
1. 事前準備:DockerとDocker Composeのインストール
Docker Composeを使用するには、まず Docker Desktop をインストールする必要があります。
Dockerのインストール
公式サイトからDockerをインストールします。
2. docker-compose.yml を作成してみよう
まずは簡単な docker-compose.yml を作成し、コンテナを管理する方法を学びましょう。
1つのサービスを定義
以下のYAMLファイルを作成し、nginxのWebサーバーを動かしてみます。
version: '3' services: web: image: nginx ports: - "80:80"
この例では web がサービス名になります。
起動
作成したファイルがあるディレクトリで、以下のコマンドを実行します。
docker-compose up -d
-dはバックグラウンド実行のオプション- ブラウザで
http://localhostにアクセスすると、Nginxのデフォルトページが表示されます。
終了
docker-compose down
これでコンテナは停止・削除されます。
3. Docker Composeのよく使うコマンド
Docker Composeを使うと、複数のコンテナを一括で管理できます。ここでは、よく使うコマンドを順番に紹介します。
① コンテナを起動
docker compose up
docker compose up を実行すると、docker-compose.yml に記載されたサービス(コンテナ)が起動します。
② バックグラウンドで起動
docker compose up -d
-dをつけるとバックグラウンドで起動し、ターミナルを占有しません。
③ 特定のサービスのみ起動
docker compose up サービス名
docker-compose.yml に定義されている特定のサービスだけを起動したい場合は、サービス名を指定します。
④ コンテナを停止&削除
docker compose down
起動したコンテナを停止し、削除します。ネットワークも削除されるため、完全にクリーンな状態に戻したいときに便利です。
⑤ コンテナを停止
docker compose stop
実行中のコンテナを停止します。ただし、コンテナ自体は削除されないため、後で docker compose start で再開できます。
⑥ 停止したコンテナを再開
docker compose start
docker compose stop で停止したコンテナを再び起動します。
⑦ コンテナを再起動
docker compose restart
コンテナを再起動したいときに使います。設定を変更した場合などに便利です。
⑧ 実行中のコンテナを確認
docker compose ps
現在動作しているコンテナの状態を一覧表示します。
⑨ コンテナのログを表示
docker compose logs
コンテナの標準出力(ログ)を確認できます。
リアルタイムでログを追いたい場合は -f をつけます。
docker compose logs -f
⑩ 特定のサービスのコンテナを削除
docker compose rm -fsv サービス名
特定のサービスのみを削除するときに使用します。
オプションの意味:
-f強制削除-sボリュームも削除-v名前付きボリュームも削除
これらのコマンドを覚えておけば、Docker Composeをスムーズに扱えるようになります!
4. NginxとExpress.jsを組み合わせたアプリを作成
ここからは、カスタムの Dockerfile と docker-compose.yml を作成し、 NginxとExpress.jsを使ったHello Worldアプリ を実装します。
ディレクトリ構成
myapp/ │── docker-compose.yml │── nginx/ │ └── default.conf └── app/ ├── Dockerfile ├── package.json ├── server.js
1. Express.jsの準備
まず、app/ ディレクトリを作成し、その中に package.json を用意します。
{ "name": "docker-express", "version": "1.0.0", "main": "server.js", "dependencies": { "express": "^4.17.1" } }
次に、server.js を作成します。
const express = require('express'); const app = express(); app.get('/', (req, res) => { res.send('Hello, World from Express.js!'); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
2. Express.jsのDockerfile
次に、app/ ディレクトリ内に Dockerfile を作成します。
FROM node:14 WORKDIR /app COPY package.json ./ RUN npm install COPY . . CMD ["node", "server.js"] EXPOSE 3000
3. Nginxの設定
Nginxをリバースプロキシとして動作させます。nginx/ ディレクトリを作成し、default.conf を追加します。
server {
listen 80;
location / {
proxy_pass http://app:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
4. docker-compose.yml を作成
最後に docker-compose.yml をルートディレクトリに作成します。
version: '3' services: app: build: ./app ports: - "3000:3000" web: image: nginx ports: - "80:80" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - app
5. コンテナの起動
docker-compose up -d
http://localhostにアクセスするとHello, World from Express.js!が表示されます。
まとめ
今回は Docker Composeの基本 から Nginx + Express.jsのWebアプリ を作るところまで解説しました。
学んだポイント
✅ Docker Composeの基本的なコマンド
✅ docker-compose.yml の書き方
✅ カスタム Dockerfile の作成
✅ NginxとExpress.jsの連携
Docker Composeを使えば、 複数のコンテナを簡単に管理できる ようになります。ぜひ試してみてくださいね。 🚀
この記事をシェアする
合同会社raisexでは一緒に働く仲間を募集中です。
ご興味のある方は以下の採用情報をご確認ください。