
Kiaomoto
このページではWindows11でWLS2とDockerを使って、Laravel11の環境を構築していきます。この回では、必要なファイルを作成してコンテナを起動する所までの方法を解説します。
Environment
- Windows11
- Docker Desktop 4.19.0
- WSL2 – Ubuntu 22.04.2 LTS
- MySQL 5.7.36
- PHP:pmf-8.2
- Nginx
- laravel11
note このページでは、Windows11+WLS2上でDockerを動かしてますが、WLS2とDockerのインストールとセットアップ方法は紹介していません。(すみません)
ファイルを準備する
フォルダ構成
以下の通りファイルとフォルダを作成してくださ。srcフォルダもしっかり作成してください。作成しなくても実はコンテナを起動するときに作成されるんですが、フォルダのオーナーがrootになってしまい、あとあと困るので、必ず空のsrcフォルダも作成してください。

docker-compose.yml
version: '3'
services:
db:
image: mysql:5.7.36
container_name: "mysql-ex"
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mysql_db
MYSQL_USER: admin
MYSQL_PASSWORD: secret
TZ: 'Asia/Tokyo'
ports:
- 3306:3306
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- db_data:/var/lib/mysql
- db_my.cnf:/etc/mysql/conf.d/my.cnf
- db_sql:/docker-entrypoint-initdb.d
php:
build: ./docker/php
container_name: "php-fpm-ex"
ports:
- 5173:5173
volumes:
- ./src:/var/www
user: XXXXX # docker/php/DockerfileのUSER_NAMEを設定してください。
nginx:
image: nginx:latest
container_name: "nginx-ex"
ports:
- 80:80
tty: true
volumes:
- ./src:/var/www
- ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
volumes:
db_data:
db_my.cnf:
db_sql:
docker/php/Dockerfile
USER_NAME、GROUP_NAME、UID(user id)、GID(group id)は、ホスト上(私の場合はUbuntu)で”id”コマンドを実行して確認できます。

FROM php:8.2-fpm
EXPOSE 5173
COPY php.ini /usr/local/etc/php/
RUN apt-get update \
&& apt-get install -y zlib1g-dev mariadb-client vim libzip-dev nodejs npm\
&& docker-php-ext-install zip pdo_mysql
RUN pecl install xdebug && docker-php-ext-enable xdebug
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
ARG USER_NAME=XXXXX # ここに上で調べた値を設定する
ARG GROUP_NAME=YYYYY # ここに上で調べた値を設定する
ARG UID=WWWWW # ここに上で調べた値を設定する
ARG GID=ZZZZZ # ここに上で調べた値を設定する
RUN groupadd -g $GID $GROUP_NAME
RUN useradd -m -s /bin/bash -u $UID -g $GID $USER_NAME
USER $USER_NAME
WORKDIR /var/www
RUN composer global require "laravel/installer"
docker/php/php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
default_charset = "UTF-8"
mbstring.language = "Japanese"
[xdebug]
zend_extension=xdebug
xdebug.mode=debug
xdebug.client_host=host.docker.internal
xdebug.client_port=9003
xdebug.start_with_request=yes
xdebug.idekey = PHPSTORM
docker/nginx/default.conf
server {
listen 80;
index index.php index.html;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
send_timeout 300;
keepalive_timeout 300;
root /var/www/example/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
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;
}
}
環境のイメージ図
すごい簡単なイメージですが、こんな感じです。今回は、PHP-FPMを使ってるので、こんな感じになります。5173番は、Viteで使います。9003番は、Xdebugで使います。 PHP-FPMは、ググれば何の事かすぐに分かるので調べてみてください。FastCGIという奴です。

コンテナの起動
コンテナを起動する準備ができました。以下のコマンドをdocker-compose.ymlの配置されている場所で実行してください。
docker-compose up -d
今日はここまでです。次回は、Laravelプロジェクトを作成していきます。