第1回 Laravel11 環境構築メモ(Windows11 + WLS2 + Dockerで構築)

Laravel
Kiaomoto
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フォルダも作成してください。

The folder structure

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プロジェクトを作成していきます。

タイトルとURLをコピーしました