はじめに
株式会社インプルの奈良です。
現代のウェブ開発では、開発環境の構築がより迅速かつ効率的であることが求められます。特に、フレームワークや言語、サービスが豊富に存在するPHPの世界では、環境設定の複雑さが開発の足かせになることもあります。
そこで登場するのが今回ご紹介する「Laradock」です。
この記事では、Laradockの概要やLaradockを利用してLaravel開発を始めるための基本的なステップを、初心者にも理解しやすいように解説していきます。
LaravelとDockerの関係性
Laravelとは
Laravelは、非常に人気のあるPHPのWebアプリケーションフレームワークで、効率的にアプリケーションを構築できます。
Dockerとは
Dockerは、アプリケーションとその依存関係をコンテナとしてパッケージ化し、どのマシン上でも一貫した環境で実行できるツールです。
Laradockとは
Laradockは、Docker上でLaravelの開発環境を簡単にセットアップするためのツールセットです。
一つのLaradockセットアップで複数のLaravelプロジェクトを実行でき、さまざまなサービス(Nginx, MySQL, Redisなど)のコンテナも提供されます。
Laradock is a full PHP development environment for Docker.
It supports a variety of common services, all pre-configured to provide a ready PHP development environment.
https://laradock.io/introduction/
Laradockのメリット
環境構築の迅速化
Laradockはプレ構築されたDockerイメージと設定を提供しているため、環境構築が迅速に行えます。
環境の統一性
Dockerを使用することで、異なるマシンやチームメンバー間でも同じ環境を持つことができます。
複数のサービスやツールの簡単な管理
Laradockでは、複数のサービスやツールを容易に管理・起動・停止できるようになっています。
Laradockのインストール
必要なツールの事前準備(Docker, Docker Compose, Git)
- DockerとDocker Composeのインストール
- Gitのインストール
エンジニアであれは上記ツールは事前にインストールしていることが多いと思いますが、使用中の端末のインストール状況を確認するためには下記コマンドをターミナルで実行してください。
$ docker --version
Docker version 20.10.17, build 100c701
$ docker-compose --version
Docker Compose version v2.10.2
$ git --version
git version 2.37.1 (Apple Git-137.1)
LaradockのGitHubリポジトリからのクローン
下記コマンドでGitHubからLaradockのリポジトリをローカルにクローンします。
$ git clone https://github.com/Laradock/laradock.git
※Laradock使用時のプロジェクト構成は下記の2つを想定しています。ご自身のプロジェクト構成に合わせてgit cloneを実行するディレクトリ位置を変更してください。
①
impl-laravel-workspace
├── laradock
└── impl-laravel-project
②
impl-laravel-workspace
└── impl-laravel-project
└── laradock
初期設定のカスタマイズ方法
.envファイルを編集することで、環境設定をカスタマイズできます。.envファイルの役割などの詳細は次項にて詳細に説明します。
Laradockの.envファイルの役割
Laradockの.envファイルは、Laradockを使用して構築するDockerコンテナの環境設定を行うための重要なファイルです。
.envファイルを通じて、Laravelアプリケーションと連携する各種サービス(Webサーバー、データベース、キャッシュサーバーなど)の設定をカスタマイズすることができます。
以下に、.envファイルの主な部分とその設定項目について詳しく解説します。
Laradockの.envファイルの構成
基本的な設定
- APP_CODE_PATH_HOST:ホストマシン上のLaravelアプリケーションのソースコードが置かれているディレクトリへのパス
- DATA_PATH_HOST:Dockerコンテナがデータを保存するためのホストマシン上のデータディレクトリへのパス
Webサーバーの設定
- NGINX_HOST_HTTP_PORT:Nginxサーバーがホストマシン上でリッスンするHTTPポート番号
- NGINX_HOST_HTTPS_PORT:Nginxサーバーがホストマシン上でリッスンするHTTPSポート番号
PHPの設定
- PHP_VERSION:使用するPHPのバージョン
- PHP_FPM_PORT:PHP-FPMサービスがリッスンするポート番号
データベースの設定
- MYSQL_VERSION:使用するMySQLのバージョン
- MYSQL_DATABASE:作成するデフォルトのデータベース名
- MYSQL_USER:データベースのユーザー名
- MYSQL_PASSWORD:データベースのパスワード
キャッシュサーバーの設定
REDIS_PORT:Redisサーバーがリッスンするポート番号
メールサービスの設定
MAILHOG_PORT:MailhogがリッスンするSMTPポート番号
その他のサービス設定
他にも、Elasticsearch、RabbitMQ、Memcachedなど、使用する各サービスに応じた設定項目があります。
設定の変更方法
①リポジトリをクローンした後、env-exampleファイルを.envとしてコピーします。
$ cp env-example .env
②.envファイルをテキストエディタで開き、必要な設定を行います。
③設定を変更したら、その設定を反映させるためにDockerコンテナを再構築する必要があります。
$ docker-compose up -d nginx mysql
上記のコマンドは、NginxとMySQLのコンテナを例として起動しています。
※Laradockの docker-compose.ymlはデフォルトで約2000行くらいコードがありますが、全てを使うわけではなく使いたいコンテナのみをピックアップして起動します。
注意点
- .envファイルに記載された設定は、Dockerコンテナをビルドする際に適用されます。そのため、.envファイルを変更した後はコンテナの再ビルドが必要です。
- Laradockは多数のサービスを同時に提供することができますが、使用するサービスのみを起動するように設定することで、リソースの節約にも繋がります。
これらの指示に従って、Laradockの.envファイルを適切に設定することで、Laravel開発環境を柔軟かつ効率的に構築することが可能です。
Laravelアプリケーションの立ち上げ
Laravelアプリケーションを立ち上げるためには、まずコンテナ環境を起動する必要があります。Laradockを使用してDocker上にLaravelの開発環境を構築した後、アプリケーションのコードを実行するためには以下の手順を踏みます。
Dockerコンテナの起動
Docker Composeを使用して、必要なコンテナを起動します。通常は以下のコマンドをプロジェクトのルートディレクトリ(docker-compose.yml が存在する場所)で実行します。
$ docker-compose up -d nginx mysql
上記により、Nginx(ウェブサーバー)とMySQL(データベース)のコンテナがバックグラウンドで起動します。
コンテナ内での作業
コンテナが起動したら、Laradockが提供するworkspaceコンテナ内でコマンドライン作業を行うことができます。以下のコマンドを使用してworkspaceコンテナのbashシェルにアクセスします。
$ docker-compose exec workspace bash
このコマンドは、実行中のworkspaceコンテナ内にbashシェルを開くために使用されます。これにより、コンテナ内部でLaravelのartisanコマンドを実行したり、アプリケーションのデバッグやパッケージのインストールなどを行うことができます。(例:php artisan migrate)
Laravelアプリケーションへのアクセス
上記の手順を完了すると、ブラウザを使用してlocalhostにアクセスすることで、Laravelアプリケーションのウェブページを見ることができます。(例:localhost:8081)
データベースやキャッシュ、キューなどのサービスとの連携
Laradockを利用すると、Laravelアプリケーションはコンテナ化されたデータベースやキャッシュ、キューサービスと簡単に連携できます。
.envファイルで適切なサービスの接続情報を設定するだけで、Laravelアプリケーションからこれらのサービスにアクセスできるようになります。
Laradockでの複数プロジェクト管理
Laradockは、複数のLaravelプロジェクトを同時に管理する能力も備えています。各プロジェクトの環境を.envファイルでカスタマイズし、必要に応じてコンテナの設定を変更することができます。
$ docker-compose exec workspace bashコマンドにより、Laradockを使った開発環境の効率性が高まり、Laravel開発の柔軟性と生産性を大いに向上させることができます。開発者はこのシェルを通じて、Laravelアプリケーションに関連する様々なコマンドラインツールやartisanコマンドを実行できます。(例:php artisan migrate)
まとめ
今回は、Laradockの概要やLaradockによるLaravel開発環境の構築方法についてご紹介しました。
Laradockは、開発者が環境構築にかかる時間を削減し、より開発に注力できるようにするための強力なツールです。迅速な環境構築、環境の一貫性、そして複数のサービスやツールの簡単な管理は、Laravel開発の効率を大いに向上させます。
ただし、Laradockは非常に強力でありながら、すべてのプロジェクトでその全機能を必要とするわけではありません。特に、小規模なプロジェクトにおいては、Laradockの提供する機能が過剰である場合も考えられます。
筆者的には、プロジェクトの規模や必要とされる機能に応じて、Laradockの使用を検討することを推奨します!
Laradockが提供する利便性と、プロジェクトの要件とのバランスを考えながら、最適な開発環境選びを行いましょう!