Laravelのインストール準備
Laravelをインストールし、動かすには以下のソフトがあるとよいでしょう。以下のソフトがなくても、環境構築をする方法はありますが、ここでは以下のソフトを使用します。
- Docker
- ブラウザ
- コードエディタ
ここでは、ブラウザはMicrosoft Edge、コードエディタはVisual Code Studioを使用します。筆者のOSはWindows 10です。
必要なファイルを作成
まずは、必要なファイルを保存するためにからのフォルダを作成します。フォルダの名前は英数字であればどのような名前でも構いません。日本語を使用するとコマンドを実行時に不安定な動作をする可能性があるので、避けてください。
次に以下のようにフォルダを作成します、

compose.ymlの中身は後程説明します。
次にdockerフォルダ内に以下のようにフォルダを作成します。

mysqlフォルダの中身は以下のようになっています。

my.cnfの中身は後程説明します。dataフォルダの中身は空の状態です。
nginxフォルダの中身は以下のようになっています。

default.confの中身は後程説明します。
phpフォルダの中身は以下のようになっています。

Dockerfile、php.iniの中身は後程説明します。
必要なコードの記述
次に各ファイルに必要なコードを記述します。
compose.ymlファイル
まずはcompose.ymlです。このファイルはdockerファイルと同じ階層に配置します。このままコピーして使用しても構いません。
services:
nginx:
image: nginx:1.21.1
ports:
- "80:80"
volumes:
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
- ./src:/var/www/
depends_on:
- php
php:
build: ./docker/php
volumes:
- ./src:/var/www/
mysql:
image: mysql:8.0.26
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: laravel_db
MYSQL_USER: laravel_user
MYSQL_PASSWORD: laravel_pass
command:
mysqld --default-authentication-plugin=mysql_native_password
volumes:
- ./docker/mysql/data:/var/lib/mysql
- ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
phpmyadmin:
image: phpmyadmin/phpmyadmin
environment:
- PMA_ARBITRARY=1
- PMA_HOST=mysql
- PMA_USER=laravel_user
- PMA_PASSWORD=laravel_pass
depends_on:
- mysql
ports:
- 8080:80
mailhog:
image: mailhog/mailhog
ports:
- "1025:1025"
- "8025:8025"
このファイルでは、Dockerのコンテナに必要な情報を記述しています。詳細は省きますが、nginxはWebサーバー用のソフトウェアで、Laravelで記述したWebサイトを表示できるようにするものです。phpはLaravelを動かすのに必要なソフトウェアであり、プログラミング言語です。mysqlはデータベースです。phpmyadminはmysqlのデータを外部から操作するツールです。mailhogは、Laravelが送信したメールを閲覧するのに使用するツールです。Dockerではこのほかにも様々な機能を追加できますが、このコースでは、以上の5つを使用します。
my.cnfファイル
次に、my.cnfファイルです。このファイルはdockerフォルダの中のmysqlフォルダの中に配置します。このままコピーして使用しても構いません。
[mysqld]
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
default-time-zone = 'Asia/Tokyo'
このファイルはmysqlでデータベースを扱うために必要な初期設定を行っています。これは、エンコード、並び替えのルール、タイムゾーンの指定を行っています。
default.confファイル
次に、default.confファイルです。このファイルはdockerフォルダの中のnginxフォルダの中に配置します。このままコピーして使用しても構いません。
server {
listen 80;
index index.php index.html;
server_name localhost;
root /var/www/public;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
このファイルはnginxの設定ファイルです。Webサーバーが特定のリクエストをどのように処理するかを定義しています。
Dockerfileファイル
次に、Dockerfileファイルです。このファイルはdockerフォルダの中のphpフォルダの中に配置します。このままコピーして使用しても構いません。
FROM php:8.2.12-fpm
COPY php.ini /usr/local/etc/php/
RUN apt update \
&& apt install -y default-mysql-client zlib1g-dev libzip-dev unzip \
&& docker-php-ext-install pdo_mysql zip
RUN curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
&& composer self-update
WORKDIR /var/www
このファイルはPHPサーバー用のコンテナを作るために必要なコマンドを記述したものです。
最初の行で、phpの8.2.12を指定してインストールし、次の行で、PHPの設定ファイルをコンテナにコピーします。次の行で、必要なパッケージをPHPサーバーにインストールします。次の行でComposerと呼ばれるPHPの依存管理ツールをインストールし、次の行で作業ディレクトリを指定しています。
php.iniファイル
次に、php.initファイルです。このファイルはdockerフォルダの中のphpフォルダの中に配置します。このままコピーして使用しても構いません。
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
このファイルはPHPサーバーの設定ファイルです。タイムゾーンや文字コード、言語を指定しています。
以下のようなフォルダ構成になっていれば問題ありません。
│ compose.yml
│
└─docker
├─mysql
│ │ my.cnf
│ │
│ └─data
├─nginx
│ default.conf
│
└─php
Dockerfile
php.ini
以上で必要なファイルはそろいました。次はターミナルを使用してLaravelをインストールしてみましょう。