以前のブログに「Laravel」のインストールをまとめました。
そこから実際に、PCに「Docker」で仮想サーバーを作成して、ローカルで「Laravel」を起動させます。
環境
- Mac Intel Ventura 13.1
- PHP: v8.1.13
- Laravel: 9.x
- Docker: 20.10.22
- docker-compose: v2.15.1
Docker環境を構築
Macに「Docker」のインストール
まずは「Docker」環境をMacにインストールします。
以下の公式サイトからパッケージをダウンロードして、インストールすると楽に行えます。
https://matsuand.github.io/docs.docker.jp.onthefly/desktop/mac/install/
インストール後に「Docker」のバージョンを確認しましょう。
$ dokcer -v
以下のようにバージョンが表示されたら、インストールは完了です。
Docker version 20.10.22, build 3a2c30b
Macに「docker-compose」のインストール
Dockerのコンテナを管理する「docker-compose」もインストールします。
以下のコマンドでダウンロードする事ができます。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
「docker-compose」コマンドを実行できるように権限を付与します。
$ docker-compose -v
インストールが出来ていれば、以下のようにバージョンが表示されます。
Docker Compose version v2.15.1
「Dockerfile」の定義
開発時には以下のようにフォルダを構成します。
/Docker : Dockerに関する設定を定義する
- Dockerfile
- php.ini
- /apache
- default.conf
/Sources : Laravelのソースコードを配置
「Dockerfile」にはPHPとLaravelに必要なライブラリをインストールして設定を行うように定義します。
FROM php:8.1.1-apache
# composerのバージョンを設定
ARG composer_ver=2.5.4
# Install php library from apt-get
RUN apt-get update \
&& apt-get install -y \
g++ \
libicu-dev \
libpq-dev \
libzip-dev \
unzip \
zip \
zlib1g-dev \
libonig-dev \
vim \
&& docker-php-ext-install \
pdo_mysql \
mysqli \
mbstring \
&& pecl install xdebug \
&& docker-php-ext-enable xdebug \
&& apt-get clean -y
# Set working dir
WORKDIR /var/www/html
# Install Composer
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
RUN chmod +x /usr/local/bin/install-php-extensions && sync \
&& install-php-extensions @composer-${composer_ver}
# Copy php.ini
RUN cp /usr/local/etc/php/php.ini-development /usr/local/etc/php/php.ini
# Enable rewrite.load
RUN cd /etc/apache2/mods-enabled \
&& ln -s ../mods-available/rewrite.load
RUN a2enmod rewrite
「docker-compose」の定義
「Docker」イメージを構成する「docker-compose.yml」を定義します。
シンプルにLaravelとデータベースのコンテナを作成するようにします。
version: '3.8'
services:
# Laravel開発環境
laravel:
build: ./Php
container_name: laravel
restart: always
ports:
- 9081:80
volumes:
- ../Source:/var/www/html
- ./Php/php.ini:/usr/local/etc/php/php.ini
- ./Php/apache/default.conf:/etc/apache2/sites-available/000-default.conf
depends_on:
- database
# database
database:
image: mariadb
container_name: database
restart: always
ports:
- 3307:3306
environment:
MYSQL_DATABASE: mysql_database
MYSQL_USER: database
MYSQL_PASSWORD: password
MYSQL_RANDOM_ROOT_PASSWORD: 'rootpass'
TZ: 'Asia/Tokyo'
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
volumes:
- ./mariadb/db_data:/docker-entrypoint-initdb.d
- ./mariadb/data:/var/lib/mysql
- ./mariadb/logs:/var/log/mysql
- ./mariadb/conf.d/my.cnf:/etc/mysql/conf.d/my.cnf
volumes:
Php:
mariadb:
「php.ini」の設定
Laravelでデバッグできるように「php.ini」を設定します。
まずは「php.ini」を、こちらからダウンロードします。
ダウンロードしたファイルの最後に以下の内容を追記して、上記のファイル構成の場所に配置します。
[xdebug]
xdebug.log=/tmp/xdebug.log
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.idekey=PHPSTORM
xdebug.client_port=9003
「default.conf」の設定
「Laravel」は「public」フォルダをドキュメントルートにするために「default.conf」を定義します。
以下の内容を記述してファイルを作成して、上記のファイル構成の場所に配置します。
<VirtualHost *:80>
# ドキュメントルートをLaravelに設定する
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/sample/public
<Directory "/var/www/html/sample/public">
AllowOverride All
Options All
Require all granted
</Directory>
# エラーログの設定
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
「my.cnf」の設定
marinaDBの設定ファイルである「my.cnf」を定義します。
以下の内容を記述してファイルを作成し、上記のファイル構成の場所に配置します。
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
[client]
default-character-set=utf8mb4」
Dockerイメージを作成する
ターミナルで「Docker」フォルダ内に移動して、以下のコマンドで「Docker」イメージの作成と起動を行います。
$ docker-compose up -d
また「Docker」を終了する場合は、以下のコマンドで実行します。
$ docker-compose down
Dockerで起動している「Laravel」にアクセスする。
ブラウザで以下のURLにアクセスして、「Laravel」のトップページが表示されていたら成功となります。
これで「Docker」を使用した「Laravel」の開発環境が完成しました。
次は「PhpStorm」を使ってデバッグを行います。