Laravel

Macで Laravel + Docker で開発環境を構築

以前のブログに「Laravel」のインストールをまとめました。
そこから実際に、PCに「Docker」で仮想サーバーを作成して、ローカルで「Laravel」を起動させます。

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」のトップページが表示されていたら成功となります。

http://localhost:9081/

これで「Docker」を使用した「Laravel」の開発環境が完成しました。
次は「PhpStorm」を使ってデバッグを行います。

コメントを残す

*