前回は 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/htmlWEBサーバ – nginx
nginxのdockerファイル
今回webサーバにnginxを使用します。nginxのdockerイメージを使用し、dockerコンテナを作成します。なお、前回と変更はありません。
Dockerfile
FROM nginx:latest
# nginx設定ファイル
COPY ./web/docker/conf/default.conf /etc/nginx/conf.d/default.confnginx設定ファイル
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/composerLaravelに必要なphpライブラリをインストールします。docker hub 上のイメージから特定のファイルをコピーし、composerを使用できるようにしています。
コンテナ作成
dockerコンテナを作成します。前回と同じです。
ビルド
docker-compose buildコンテナ生成
docker-compose up -dコンテナ生成の確認
docker-compose psLaravelのインストール
php-fpmコンテナにログインし、Laravelをインストールします。ログイン後のカレントディレクトリが /var/www/html である事を確認してからLaravelのインストールコマンドを実行して下さい。
ログイン
docker-compose exec -it app bashLaravelインストール
composer create-project --prefer-dist laravel/laravel .動作確認
以下をブラウザで実行すると、Laravelの画面が確認出来ます。
http://localhost/最後に
特にありません。