【docker】nginx php-fpm Laravel

前回は nginx、php-fpmを使用してphp実行環境を構築しました。

今回はLaravel環境を構築します。

ディレクトリ構成

以下の構成とします。

.
├── docker-compose.yml
├── app
│   └── docker
│       └── Dockerfile // php-fpmのdockerファイル
├── web
│   └── docker
│       ├── conf
│       │   └── default.conf // nginxの設定ファイル
│       └── Dockerfile // nginxのdockerファイル
└── src // Laravelインストールディレクトリ

各ファイルについて

docker-compose

今回使用する docker-compose.yml は以下の通りです。なお、前回と変更はありません。

docker-compose.yml

services:
  # Nginx Service
  web:
    container_name: web-service
    build:
      context: .
      dockerfile: ./web/docker/Dockerfile
    ports:
      - "80:80"
    depends_on:
      - app

  # PHP Service
  app:
    container_name: app-service
    build:
      context: .
      dockerfile: ./app/docker/Dockerfile
    volumes:
      - ./src:/var/www/html

WEBサーバ – nginx

nginxのdockerファイル

今回webサーバにnginxを使用します。nginxのdockerイメージを使用し、dockerコンテナを作成します。なお、前回と変更はありません。

Dockerfile

FROM nginx:latest

# nginx設定ファイル
COPY ./web/docker/conf/default.conf /etc/nginx/conf.d/default.conf

nginx設定ファイル

nginx設定ファイルは以下の通りです。変更点は、ドキュメントルートになります。Laravelは public ディレクトリを参照する事が前提の為、ドキュメントルートを変更しました。

default.conf

server {

    # ポート番号
    listen 80;

    # サーバ名
    server_name localhost;

    # ドキュメントルート
    root /var/www/html/public;
    
    # インデックスディレクティブ
    index index.php index.html;
    
    # 文字コード
    charset utf-8;
    
    # ファイル確認ディレクティブ
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    # ------------------------
    # php-fpm の設定
    # ------------------------
    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass app-service:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

php-fpmコンテナ

今回はphpを実行する為にphp-fpmを使用します。その為のphp-fpmコンテナを作成します。

Dockerfile

# ベースイメージ
FROM php:8.4-fpm

# 必要な依存パッケージをインストール
RUN apt-get update && apt-get install -y \
     git \
     unzip \
     zip \
     && apt-get clean

# docker hub 上のイメージから特定のファイルをコピー
COPY --from=composer:2.8.9 /usr/bin/composer /usr/bin/composer

Laravelに必要なphpライブラリをインストールします。docker hub 上のイメージから特定のファイルをコピーし、composerを使用できるようにしています。

コンテナ作成

dockerコンテナを作成します。前回と同じです。

ビルド

docker-compose build

コンテナ生成

docker-compose up -d

コンテナ生成の確認

docker-compose ps

Laravelのインストール

php-fpmコンテナにログインし、Laravelをインストールします。ログイン後のカレントディレクトリが /var/www/html である事を確認してからLaravelのインストールコマンドを実行して下さい。

ログイン

docker-compose exec -it app bash

Laravelインストール

composer create-project --prefer-dist laravel/laravel .

動作確認

以下をブラウザで実行すると、Laravelの画面が確認出来ます。

http://localhost/

最後に

特にありません。

© DeNnie.Lab All Rights Reserved.