近年、Webアプリケーション開発において、効率性と再現性の高い開発環境の構築がますます重要になっています。
特にPHPを使用したLaravelプロジェクトでは、さまざまなライブラリやバージョンの依存性を管理する必要があるため、開発環境のセットアップに時間がかかりがちです。
ここで注目されているのが、Dockerを使用した環境構築です。
Dockerを使う事のメリット
Dockerは、複雑な開発環境を簡単に、かつ一貫してセットアップできることで知られています。
異なるOSや他のプロジェクトとのバージョン衝突などを気にすることなく、プロジェクトに必要な環境を完全に再現できます。
これにより、”私のマシン上では動作する”という問題を回避し、チーム内での開発効率を大きく向上させることができます。
Dockerのインストール方法
Dockerを使用するためには、まずDocker Desktopをインストールする必要があります。
Docker公式サイトからご自身のOSに合致するインストーラーをダウンロードし、指示に従ってインストールしてください。
具体的な設定ファイルの内容
Dockerfile
PHPとLaravel環境を準備する基本的なDockerfile
の例を以下に示します。
# PHP 8.2をベースイメージとして使用
FROM php:8.2-fpm
# 必要なパッケージのインストールとPHPの拡張機能のインストール
RUN apt-get update && apt-get install -y zip unzip git
RUN docker-php-ext-install pdo pdo_mysql
# コンテナ内での作業ディレクトリを指定
WORKDIR /var/www
# ホストマシンの現在のディレクトリの内容をコンテナの/var/wwwにコピー
COPY . /var/www
# Composerをインストールし、グローバルに利用可能にする
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
このDockerfile
は、PHPの公式イメージをベースにし、pdoとpdo_mysqlの拡張をインストールしています。
そして、composerは依存関係を整理するのに非常に便利なので、まずはcomposerを入れるところまでDockerfileで対応します。
docker-compose.yml
version: '3'
services:
app:
build: .
ports:
- "8000:8000"
volumes:
- .:/var/www
このdocker-compose.yml
では、先ほど作成したDockerfile
を使用してアプリケーションコンテナをビルドし、8000ポートでアクセスできるようにポートを設定しています。
また、ローカルのプロジェクトディレクトリとコンテナ内の/var/www
を同期することで、開発中の変更が即座に反映されるようにしています。
Hello Worldを動作させる
設定ファイルを準備したら、以下のコマンドを実行してDockerイメージをビルドし、コンテナを起動します。
docker-compose up --build
ビルドが完了し、コンテナが起動したら、一度docker環境内に入りcomposerからLaravelを使えるようにします。
docker-compose exec app bash
composer.jsonがないので、まずは下記のようにcomposer.jsonを作成するようにコマンドを実行します。composer init
を実行し、Authorの部分のみn
を入力すれば後はデフォルトで作成が可能です。
必要に応じて設定を変更してください。
次にcomposer経由でLaravelアプリケーションを作成します。
composer create-project laravel/laravel --prefer-dist src
srcフォルダに移動し、Laravelアプリケーションを立ち上げます。
cd src/
php artisan serve --host=0.0.0.0
これで、ブラウザからhttp://localhost:8000
にアクセスすると、Laravelの”Hello World”画面が表示されるはずです。
まとめ
この記事を通じて、Dockerを使用してPHPとLaravelの開発環境を素早く簡単に構築する方法をご紹介しました。Dockerを利用することで、どのような環境でも一貫した開発環境を構築できるため、プロジェクト間での不整合を防ぎながら、チーム全体の開発速度を向上させることができます。
これからLaravelでのプロジェクト開発を始める方は、ぜひこの流れを試してみてください。
コメント