DockerでPHP+Laravel開発環境を10分で構築する

近年、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でのプロジェクト開発を始める方は、ぜひこの流れを試してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

アキレアソフト代表の大山亮です。

週休完全4日の会社を設立するべく色々事業を進めています。
スキル:EM/PjM/フルスタックエンジニア/1on1/管理職

週休完全4日の野望に協力してくれる方も募集しています。
投資も趣味でやってます。

コメント

コメントする

目次