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/htmlservices:→ コンテナの一覧build:→ Dockerfile から作るimage:→ 既存の公式イメージを使うvolumes:→ ローカルとコンテナのファイルを同期build: .の場合は同じ階層にあるDockerfileを参考に環境を構築する
💻 よく使うコマンド
覚えておくべきDockerの基本コマンド:
コマンド | 目的 |
|---|---|
| Dockerのバージョン確認 |
| コンテナの起動(バックグラウンド) |
| コンテナを完全に終了・削除 |
| コンテナを一時停止 |
| コンテナの中に入って作業する |
| 起動中のコンテナ一覧を表示 |
📁 ボリュームのマウント(bind mount)
volumes:
- ./frontend:/appこうしておくと、ローカルの frontend フォルダで保存した内容が、コンテナ内の /app に即時反映される。
→ ホットリロードも効く。Next.jsやViteなどのフロント開発では必須の設定。
(ホットリロード・・・コードを編集して保存すると、自動でブラウザやアプリに変更内容が反映される仕組みのこと。)
💻 フロントエンドでのDocker活用イメージ
使い方 | 説明 |
|---|---|
Node.js環境を統一 | 全員が同じNode.jsバージョンで開発できる |
ViteやNext.jsをコンテナで実行 |
|
ホットリロード対応 | ローカル編集が即座に反映される |
API・DBとの連携 | バックエンドやDBもコンテナ化して一括管理 |
⭐️簡単なプロジェクト開始手順
Dockerインストール
- 公式サイトからDockerをインストール
→ https://www.docker.com/ - インストール後、ターミナルでバージョン確認
docker -v docker-compose -v①ファイルの作成|web/index.php
- プロジェクト用のフォルダを作成。
- その中に任意のフォルダを作成。今回は
webで作成。 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 stopdocker-compose stop -dは全体とストップさせる。docker stop my-nginxで単体をストップさせる。
▶️Dockerを再開する
docker-compose up -ddocker-compose up -dは全体とスタートさせる。docker up my-nginxで単体をスタートさせる。
💡すべての状態を確認する
起動中のコンテナと停止中のコンテナ全ての状態を確認することができる。
docker ps -a🆑コンテナを削除する
下記でコンテナを削除できる。削除後にまた必要となった時はビルドし直す必要がある。
docker rm my-nginx