Docker を使えば、PHP8 + MySQL + Xdebug + Laravel といった開発環境を簡単に構築できる。この記事では、特に Windows 環境で Docker Desktop を利用する場合と、他のマシンに環境を移行する方法について解説する。
Docker Desktop は必須か?
結論から言えば、Docker Desktop は必須ではない。Docker Desktop は Windows や macOS 環境で Docker を使いやすくするツールだが、以下の手順で Docker Desktop を使わない方法も可能だ。
Docker Desktop を使わない場合の手順
WSL2 (Windows Subsystem for Linux) をインストールする
-
- Ubuntu などの Linux ディストリビューションを WSL2 にインストールする。
Docker を WSL2 上にインストールする
Docker サービスを手動で起動する
sudo apt update
sudo apt install docker.io docker-compose
sudo service docker start
sudo docker ps
sudo docker compose up -d
Docker Desktop を使うメリットとしては、GUI でコンテナを管理できたり、WSL2 との統合が容易であることが挙げられる。一方、システムリソースの消費が大きく、カスタマイズ性が低いデメリットもある。
Docker Desktop を使うメリットとしては、GUI でコンテナを管理できたり、WSL2 との統合が容易であることが挙げられる。一方、システムリソースの消費が大きく、カスタマイズ性が低いデメリットもある。
Docker イメージを使った開発環境の移行方法
Docker イメージとは?
Docker イメージは、OS、アプリケーション、設定ファイル、必要なライブラリなどをまとめたものだ。このイメージを使えば、他のマシンでも同じ開発環境を簡単に再現することができる。
イメージ作成から他のマシンへの移行手順
Docker イメージを作成する
docker commit <コンテナID> my-laravel-env
<コンテナID>
は、docker ps
で確認できるコンテナ ID を指定する。
イメージをエクスポートする
docker save -o my-laravel-env.tar my-laravel-env
イメージを .tar
ファイルとしてエクスポートすることで、他のマシンに持ち運びやすくなる。
他のマシンでイメージをインポートする
docker load -i my-laravel-env.tar
エクスポートした .tar
ファイルをインポートすることで、同じ Docker イメージが他のマシンでも使えるようになる。
コンテナを起動する
docker run -d -p 8080:80 –name my-laravel-container my-laravel-env
ソースコードは Docker イメージ内に含まれるのか?
イメージに含める場合
Dockerfile
を使えば、Laravel プロジェクトや HTML、PHP などのソースコードを Docker イメージ内に含めることも可能だ。
FROM php:8.1-apache
WORKDIR /var/www/html
COPY . /var/www/html
RUN apt-get update && \
apt-get install -y zip unzip && \
curl -sS https://getcomposer.org/installer | php — –install-dir=/usr/local/bin –filename=composer && \
composer install
EXPOSE 80
ビルドコマンド
docker build -t my-laravel-image .
他のマシンにコピーする場合は、イメージをエクスポート・インポートすることで同じ環境が再現できる。
開発中はボリュームマウントが便利
開発中は、Docker イメージにソースコードを含めるよりも「ボリュームマウント」を使うほうが便利だ。
version: ‘3.9’
services:
app:
image: php:8.1-apache
container_name: my-laravel-app
working_dir: /var/www/html
volumes:
– ./my-laravel-project:/var/www/html
ports:
– “8080:80”
environment:
– APP_ENV=local
メリット
- ホスト側のファイルを編集すれば、即座にコンテナ内に反映される。
- Laravel のコード変更やデバッグが容易になる。
まとめ
- Docker Desktop は必須ではないが、使うことでセットアップが簡単になる。
- 開発環境を他のマシンに移行する場合、Docker イメージ を使えばスムーズ。
- 本番環境では「イメージにソースコードを含める」方法、開発環境では「ボリュームマウント」がオススメ。
Docker を使いこなすことで、環境構築の手間を大幅に削減し、開発効率を上げることができるので、ぜひ試してみてください。