お問い合わせはこちら

DockerでLaravel開発環境を手軽に構築する手順

公開
更新
DockerでLaravel開発環境を構築する方法

Laravel開発環境を、手間なく用意したいとお考えでしょうか。世界中に普及しているPHPフレームワーク「Laravel」は、Docker上で使うことも可能です。

Dockerを使えば他開発者とLaravel環境を共有したり、万が一環境に不具合が生じた際に作り直したりするのも手間がかかりません。

この記事では、Dockerを使ってLaravel開発環境を手軽に構築する手順を紹介します。

Laravelとは

Laravel(ララベル)とは、マイクロソフトの.NET開発に携わっていたTaylor Otwell氏により開発されたPHP用のフレームワークです。オープンソースとして公開されており、初心者でも手軽に扱いやすいことから世界中に普及しています。Laravelは主にWebアプリケーション開発の現場で採用されており、実際にLaravelを用いて幅広い種類のアプリが開発されている状況です。

Laravel開発環境をDockerで構築する方法

Dockerを使えば、比較的簡単にLaravelの開発環境を構築することが可能です。

ここでは、Ubuntu 22.04上に構築したDockerを使い、Laravelの開発環境を構築する方法を紹介します。

※Docker及びDocker Composeの環境は構築済のものとします。UbuntuにDockerやDocker Composeの環境を構築する方法は、以下記事を参照ください。

【入門】UbuntuにDockerをインストールする

【入門】UbuntuにDockerをインストールする

Dockerがあれば様々なアプリケーションやサーバーを、仮想環境上で手軽に扱えるようになります。Docker環境はUbuntuをはじめ、Linux系のOSで構築が可能です。 この記事では、そもそもDockerとは何か簡単に振り返った上で、UbuntuにDockerをインストールする手順を分かりやすく解説しています。DockerをUbuntuへインストールするのに、煩雑で手間のかかる作業は必要ありま…

【入門】Docker Composeとは?インストールと使い方

【入門】Docker Composeとは?インストールと使い方

Docker Composeは、Dockerを日常的によく使う人程役立つツールです。多くのDockerコンテナを操作する必要があるケースでは、Docker Composeを使うことで作業の負担が大幅に軽減されます。一方で、Docker Composeとは何かや使い方について知らない方も多いのではないでしょうか。 この記事ではDocker Composeの概要と、インスト―ル方法を解説しています。そ…

なお、KAGOYAのVPSの場合はアプリケーションセットアップを選択することで、Docker CEが構築済の状態からスタートできるため、自分でDocker Composeの環境構築をする必要はありません。

その他、Webサーバー「nginx」と「php」「MySQL」を使います。

Laravel開発環境用のディレクトリを作成し、作成したディレクトリへ移動して下さい。

mkdir laravel_docker
cd laravel_docker

これからlaravel_dockerディレクトリ配下に以下のようにディレクトリ・ファイルを作成していきます。(記載したコマンドを実行すると、以下の通りディレクトリ・ファイルが作成されます。)

複数のコンテナを同時に起動するためのファイル「compose.yml」を作成します。

vi compose.yml

viエディタが起動するので以下のように記述し、作成したファイルを保存してください。

services:
app:
container_name: app
build: ./docker/php
volumes:
- .:/var/www
nginx:
image: nginx
container_name: nginx
ports:
- 8000:80
volumes:
- .:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
working_dir: /var/www
depends_on:
- app
db:
image: mysql:5.7
container_name: db
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: database
MYSQL_USER: db-user
MYSQL_PASSWORD: db-pass
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./docker/db/data:/var/lib/mysql
- ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
- ./docker/db/sql:/docker-entrypoint-initdb.d
ports:
- 3306:3306

※OSによってはMySqlやMariaDBなどのデータベースがインストール済であるため、「db:」以下のコマンドが不要になる場合もあります。

vi エディタの使い方

キーボードの「i」キーで編集できる入力モードになります。矢印キーで編集したい箇所にカーソルを移動して編集していきます。編集が完了したら「Esc」キーで入力モードを終了し、「:wq」入力し「Enter」キーで編集内容を保存できます。

次に「docker」というディレクトリを作成し、その配下へ移動します。

mkdir docker
cd docker

新たにphpというディレクトリを作成し、その配下へ移動します。

mkdir php
cd php

phpの設定ファイル「php.ini」を作成します。

vi php.ini

viエディタが起動するので以下のように記述し、作成したファイルを保存してください。

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[opcache]
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

Dockerコンテナを起動するのに使う「Dockerfile」を作成します。

vi Dockerfile

viエディタが起動するので以下のように記述し、作成したファイルを保存してください。

FROM php:8.2-fpm
COPY php.ini /usr/local/etc/php/

RUN apt-get update \
  && apt-get install -y zlib1g-dev mariadb-client vim libzip-dev \
  && docker-php-ext-install zip pdo_mysql

#Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

ENV COMPOSER_ALLOW_SUPERUSER 1

ENV COMPOSER_HOME /composer

ENV PATH $PATH:/composer/vendor/bin


WORKDIR /var/www

RUN composer global require "laravel/installer"

phpディレクトリから1つ上のディレクトリへ移動します。

cd ..

新たにnginxというディレクトリを作成し、その配下へ移動します。

mkdir nginx
cd nginx

Webサーバー「nginx」の設定ファイル「default.conf」を作成します。

vi default.conf

viエディタが起動するので以下のように記述し、作成したファイルを保存してください。

server {
listen 80;
root /var/www/laravel-project/public;
index index.php;
location / {
root /var/www/laravel-project/public;
index index.php;
try_files $uri $uri/ /index.php$query_string;
}
location ~ .php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass app:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}

compose.ymlがあるlaravel_docker直下へ移動します。

cd ..
cd ..

compose.ymlを使い、Dockerコンテナを起動します。

docker compose up -d
【注意】

OSによってはMySqlやMariaDBなどのデータベースがインストール済であるため、このコマンドで指定したデータベースが起動できない可能性があります。エラーが発生した場合、インスール済のデータベースを削除してから改めて本コマンドを実行してください。

以下コマンドでDockerコンテナが正常に起動していることを確認します。

docker compose ps

Dockerコンテナが正常に起動していれば、以下のように起動中のDockerコンテナ一覧が表示されます。

Laravelアプリを作成する

作成したDockerコンテナの中へ入り、Laravelアプリを作成します。

docker compose exec app bash

Dockerコンテナの中に入れたので、以下コマンドを実行します。

composer create-project --prefer-dist laravel/laravel laravel-project "10.*"

lsコマンドを実行すると、以下のようにLaravelアプリが作成されたことを確認できます。

storageディレクトリの所有者をwww-dataに変更します。

cd laravel-project
chown www-data storage/ -R

Laravelが起動したことを確認するため、ブラウザで以下URLへアクセスします。

http://DockerがインストールされたサーバーのIPアドレス:8000

成功していれば、以下のようにLaravelのウェルカムページが表示されます。

【参考】Windows環境でDockerを使いLaravel開発環境を構築する方法

Windowsユーザーは「WSL2」を使うことで、Windows環境上でDockerを使いLaravel開発環境を構築することもできます。WSL2とは、Windows上で使えるLinuxの実行環境です。

WSL2の詳細及び、Windows上でWSL2を使うための手順については以下記事をご覧ください。

WindowsでWSL2を使って「完全なLinux」環境を作ろう!

WindowsでWSL2を使って「完全なLinux」環境を作ろう!

WSLとは、Windows上でLinuxを動作させるための実行環境です。新しいバージョンである「WSL2」ではWindows上で「完全なLinux」が動かせるようになり、できることが大幅に増えました。この記事ではWSL(WSL2)とは何かや、WSL1・WSL2の違い、WSL2を使ってLinux環境を構築する方法について解説します。 Windows上でLinuxを動かせる「WSL」とは? 「WSL(…

まとめ

Laravelはその使いやすさから、世界中に普及しているPHPフレームワークです。Dockerなら、Laravel開発環境を簡単な手順で用意できます。

そのためLaravel開発環境を構築したい場合は、Dockerの利用を検討するとよいでしょう。Docker環境自体の確保も容易でコストもかからないため、Laravelをこれから学習したい初心者の方にもおすすめできます。

日額 20円 で使えるVPS

開発・検証・プログラミング学習に。無駄なコストもかけたくないあなたにおすすめのVPS

カゴヤのVPSは初期費用無料でアカウント登録さえしておけば、必要なときだけ日額課金でサーバーを立ち上げ可能!料金は使った分だけ。