docker-composeをつかってLaravel9とPHP8.0の実行環境を構築する手順を説明します。
コンテナはnginxとphp-fpmを使う方法もありますが、今回は本番環境へデプロイを容易に行えることを考慮してapacheをwebサーバにします。
Laravelをインストール
まずはLaravel9をインストールします。Laravel sailを使う方法もありますが、今回はdocker-composeを手作業で作りたいので、laravel
コマンドを使います。
mkdir example-app && cd example-app
laravel new backend
ホストOSから直接起動できること確認
ホストOSにphp8.xがインストールされていれば、Dockerを使わずに動作するか、下記のコマンドで確認します。
cd backend
php artisan serve
# http://localhost:8000/にアクセスできることを確認
cd ..
ファイルの構造を作る
docker-composeで環境を作るためにまずは空のファイルで構造を作ります。
touch docker-compose.yaml
mkdir -p docker/php/apache
touch docker/php/Dockerfile
touch docker/php/php.ini
touch docker/php/apache/000-default.conf
ここでディレクトリ構成は以下の形になります。
example-app
├── backend
│ └── ...
├── docker
│ └── php
│ ├── Dockerfile
│ ├── apache
│ │ └── 000-default.conf
│ └── php.ini
└── docker-compose.yaml
ファイルを用意する
下記の内容でファイルの中身を用意します。
docker-compose.yaml
version: '3'
services:
web:
container_name: web
build:
context: .
dockerfile: ./docker/php/Dockerfile
ports:
- 80:80
volumes:
- ./backend:/var/www/html
docker/php/Dockerfile
FROM php:8.0-apache-bullseye
RUN apt-get update \
&& apt-get install -y zlib1g-dev libzip-dev unzip\
&& docker-php-ext-install zip
ENV COMPOSER_ALLOW_SUPERUSER 1
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
ADD docker/php/php.ini /usr/local/etc/php/
ADD docker/php/apache/000-default.conf /etc/apache2/sites-enabled/
WORKDIR /var/www/html
COPY ../../../backend /var/www/html
RUN chown www-data storage/ -R \
&& composer install
docker/php/php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
docker/php/apache/000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
docker-composeで起動する
ファイルを用意したら、下記のコマンドでdockerを起動します。
docker-compose build
docker-compose up -d
起動後に、ブラウザからhttp://localhost/
にアクセスして表示されればOKです。
後片付け
動作確認したら、下記のコマンドで作ったdockerの環境を削除できます。
docker-compose down --rmi all --volumes --remove-orphans
こちらもおススメ
誤:
docker-comopse up -d
正
docker-compose up -d
typoの指摘ありがとうございます! 記事の修正しました。