Docker|Dockerとは?Dockerを使用して開発環境を構築する

Dockerを使用して複数人でも開発しやすい環境を作る

6/2/2025

🐳Dockerとは

仮想環境を簡単に作って動かせるツール

通常、Node.js や PHP、MySQL などを使いたいときは、PCに直接インストールする必要がある。
Docker を使えばそれらを「コンテナ」という軽量な仮想環境に閉じ込めて動かせる。(PCの中に小さな仮想マシンを作るイメージ。)


仮想環境をいくつでも作成できるため、アプリごとに異なる開発環境を用意することも可能。
チームでの開発にも強く、全員が同じ環境で作業することで環境差異によるバグを減らすことができる。

Dockerなら、あらかじめ構築しておいた開発環境を「image」という形で再利用・共有できる。

🧾 Docker image

仮想環境の種類。
MySQL環境を作りたい場合はMySOL環境のDocker image、nginx環境を作りたい場合はnginx環境のDocker imageを入手する。

入手する場所は、Docker hubというサイトで配布されている。

取得済みのimagesは下記で確認が可能。

docker images

🧾 コンテナ

Imageをもとに実際に動かす実行環境。
オブジェクト指向でいうとDocker imageがクラスで、コンテナはインスタンス。
イメージからコンテナを作成することを「ビルドする」という。

Docker imageでどんな環境が必要なのかを決めて、コンテナで実際に呼び出して使うというイメージ。

🔧コンテナの作成と実行

docker run単体のコンテナの作成と実行を行う。(このコマンドはdocker buildとdocker startが実行されている)

docker run -d -p 8080:80 --name my-nginx-container my-nginx

🧾 Dockerfile

Dockerfile は、自分の使いたい環境を定義する設計図。
例:Node.jsの開発環境を作りたいときの Dockerfile 。

FROM node:18-alpine     # ベースにするイメージ(Node.jsが入っている)
WORKDIR /app            # コンテナ内での作業ディレクトリ
COPY . .                # ローカルの全ファイルをコンテナにコピー
RUN npm install         # 依存関係をインストール
CMD ["npm", "run", "dev"] # デフォルトで実行するコマンド

→ このDockerfileを docker build すれば、環境を自動構築できる。

📦 docker-compose

開発現場ではphpのコンテナ、Apachのコンテナ、mySqlのコンテナというように複数のコンテナを同時に立ち上げている。
複数のコンテナをまとめて起動・管理できるのが docker-compose
その設定ファイルの「 docker-compose.yml」ファイルは「どのイメージを使って、どういう設定でコンテナを起動するか」を書く設定ファイル。

例:フロントエンド+バックエンド(PHP)をまとめて起動する構成:

version: '3'
services:
 db: postgres
 web:
  build: .
  frontend:
    build: ./frontend
    ports:
      - "3000:3000"
    volumes:
      - ./frontend:/app
  backend:
    image: php:8.1-apache
    ports:
      - "8080:80"
    volumes:
      - ./backend:/var/www/html
  • services: → コンテナの一覧
  • build: → Dockerfile から作る
  • image: → 既存の公式イメージを使う
  • volumes: → ローカルとコンテナのファイルを同期
  • build: .の場合は同じ階層にあるDockerfileを参考に環境を構築する

💻 よく使うコマンド

覚えておくべきDockerの基本コマンド:

コマンド

目的

docker -v

Dockerのバージョン確認

docker-compose up -d

コンテナの起動(バックグラウンド)

docker-compose down

コンテナを完全に終了・削除

docker-compose stop

コンテナを一時停止

docker-compose exec サービス名 bash

コンテナの中に入って作業する

docker ps

起動中のコンテナ一覧を表示

📁 ボリュームのマウント(bind mount)

volumes:
  - ./frontend:/app

こうしておくと、ローカルの frontend フォルダで保存した内容が、コンテナ内の /app に即時反映される。
→ ホットリロードも効く。Next.jsやViteなどのフロント開発では必須の設定。

(ホットリロード・・・コードを編集して保存すると、自動でブラウザやアプリに変更内容が反映される仕組みのこと。)

💻 フロントエンドでのDocker活用イメージ

使い方

説明

Node.js環境を統一

全員が同じNode.jsバージョンで開発できる

ViteやNext.jsをコンテナで実行

npm run dev をコンテナ内で実行

ホットリロード対応

ローカル編集が即座に反映される

API・DBとの連携

バックエンドやDBもコンテナ化して一括管理

⭐️簡単なプロジェクト開始手順

Dockerインストール

  1. 公式サイトからDockerをインストール
     → https://www.docker.com/
  2. インストール後、ターミナルでバージョン確認
docker -v docker-compose -v

①ファイルの作成|web/index.php

  1. プロジェクト用のフォルダを作成。
  2. その中に任意のフォルダを作成。今回はweb で作成。
  3. webフォルダ内にindex.php を作成。
<?php 
 phpinfo(); 
?>

② サーバー設定ファイルを用意

プロジェクト内に、docker-compose.yml という拡張子がymlの設定ファイルを作成。
→ポート8080でアクセス可能になる。


③Dockerでサーバーを起動

docker-compose upは複数のコンテナをまとめて起動するコマンド。docker-compose.yml に定義された複数のサービス(Webサーバー、DBなど)を一括で起動。

docker-compose up -d
  • -d はバックグラウンドでの実行オプション
  • 初回はイメージのダウンロードがあるため少し時間がかかる

④ブラウザで確認

ブラウザを開いて以下のURLにアクセス:

http://localhost:8080

→PHPの情報画面(phpinfo)が表示されればOK⭐️


⏸️ Dockerを停止する

docker-compose stop

docker-compose stop -dは全体とストップさせる。
docker stop my-nginxで単体をストップさせる。


▶️Dockerを再開する

docker-compose up -d

docker-compose up -dは全体とスタートさせる。
docker up my-nginxで単体をスタートさせる。

💡すべての状態を確認する

起動中のコンテナと停止中のコンテナ全ての状態を確認することができる。

docker ps -a

🆑コンテナを削除する

下記でコンテナを削除できる。削除後にまた必要となった時はビルドし直す必要がある。

docker rm my-nginx