1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Laravel12 + PHP8.4 + Nginx1.27.5 + MySql8.4で環境構築(Docker)

Last updated at Posted at 2025-05-23

以前、Laravel8で環境構築をしたため最新版としてLaravel12の環境構築に関して記載する。
今回は自分の学習も兼ねて、前のファイルの配置(Laravel8)など変更している。

本記事は過去のLaravel8の環境構築の手順を参考にしている。
https://qiita.com/pig_buhi555/items/8693a578820444f0da91

また、php.iniの内容も過去に書いた記事の内容を参考にしている。
https://qiita.com/pig_buhi555/items/48da77582b66a2e1b7c0

1. ファイルの配置

以下の配置で、ファイルを作成していきます。

/Laravel12_study
├─ /docker
| ├─ /db
| ├─ /nginx
|   └─ default.conf 
| └─ /php
|   └─ php.ini 
| └─ /Dockerfile 
├─ /laravel12
└─ docker-compose.yml

2. php.ini

2025/5/26更新

php.ini
[Date]
#タイムゾーンの設定
date.timezone = "Asia/Tokyo"

[mbstring]
default_charset=EUC-JP
mbstring.language = "Japanese"

[opcache]
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
# 画面に変更が反映されるまでの時間(開発環境のため0)
; opcache.revalidate_freq=60
opcache.revalidate_freq=0
opcache.fast_shutdown=1
opcache.enable_cli=1

#パフォーマンスチューニング
zend_extension = opcache
opcache.enable_cli = 1
opcache.jit = tracing
opcache.jit_buffer_size = 128M

3. Dockerfile

FROM php:8.4-fpm 
RUN apt-get update && apt-get install -y \
zlib1g-dev \
libzip-dev \
vim \

# コンテナ内でzip・pdo_mysql・opcacheの3つのPHPの拡張モジュールインストール
&& docker-php-ext-install zip pdo_mysql opcache

# カレントディレクトリ(コンテナに入るとここ)
WORKDIR /var/www/laravel12

# コンポーザーインストール
COPY --from=composer /usr/bin/composer /usr/bin/composer

# rootでインストール許可
ENV COMPOSER_ALLOW_SUPERUSER 1

ENV COMPOSER_HOME /composer
ENV PATH $PATH:/composer/vendor/bin

4. default.conf

default.conf
server {
  listen 80;
  # ここを変更
  root /var/www/laravel12/public;
  index index.php;
  
  location / {
    # ここを変更
    root /var/www/laravel12/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;
  }
}

5. docker-compose.yml

docker-compose.yml
version: "3"
services:
  app:
    container_name: app
    build: ./docker
    volumes:
      - ./laravel12:/var/www/laravel12
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
  nginx:
    image: nginx:1.27.5
    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:8.4
    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
    ports:
      - 3306:3306

  # http://localhost:4040/
  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=db
      - PMA_USER=root
      - PMA_PASSWORD=root
    # dbのサービス名
    links:
      - db
    ports:
      - 4040:80
    volumes:
      - ./phpmyadmin/sessions:/sessions

6. Laravel12インストール

laravel12フォルダにインストールする

composer create-project --prefer-dist laravel/laravel ./ "^12"

7. 画面

・Laravelの初期画面
http://localhost:8000/
スクリーンショット 2025-05-23 13.12.45.png

・phpMyAdmin
http://localhost:4040/

8. コマンド

・起動

$ docker-compose up -d

・終了

$ docker-compose down

以下のコマンドでコンテナに入れます。

$ docker-compose exec app bash
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?