Docker Compose超入門 初心者でもすぐに使える基礎ガイド

投稿更新日: 2025/6/6

サムネイル

Dockerを使うとアプリの環境を簡単に構築出来ますが、複数のコンテナを扱う場合、コマンドが増えて面倒になることがあります。そんなときに役立つのが Docker Compose です!

本記事では、Docker Composeの基本から、よく使うコマンド、実際にNginxとExpress.jsを組み合わせたアプリの作成まで、ステップバイステップで解説します。


1. 事前準備:DockerとDocker Composeのインストール

Docker Composeを使用するには、まず Docker Desktop をインストールする必要があります。

Dockerのインストール

公式サイトから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を組み合わせたアプリを作成

ここからは、カスタムの Dockerfiledocker-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では一緒に働く仲間を募集中です。

ご興味のある方は以下の採用情報をご確認ください。