LaravelをDockerを使ってインストール(準備編)

Laravelのインストール準備

Laravelをインストールし、動かすには以下のソフトがあるとよいでしょう。以下のソフトがなくても、環境構築をする方法はありますが、ここでは以下のソフトを使用します。

  • Docker
  • ブラウザ
  • コードエディタ

ここでは、ブラウザはMicrosoft Edge、コードエディタはVisual Code Studioを使用します。筆者のOSはWindows 10です。

必要なファイルを作成

まずは、必要なファイルを保存するためにからのフォルダを作成します。フォルダの名前は英数字であればどのような名前でも構いません。日本語を使用するとコマンドを実行時に不安定な動作をする可能性があるので、避けてください。

次に以下のようにフォルダを作成します、

compose.ymlの中身は後程説明します。

次にdockerフォルダ内に以下のようにフォルダを作成します。

mysqlフォルダの中身は以下のようになっています。

my.cnfの中身は後程説明します。dataフォルダの中身は空の状態です。

nginxフォルダの中身は以下のようになっています。

default.confの中身は後程説明します。

phpフォルダの中身は以下のようになっています。

Dockerfile、php.iniの中身は後程説明します。

必要なコードの記述

次に各ファイルに必要なコードを記述します。

compose.ymlファイル

まずはcompose.ymlです。このファイルはdockerファイルと同じ階層に配置します。このままコピーして使用しても構いません。

services:
    nginx:
        image: nginx:1.21.1
        ports:
            - "80:80"
        volumes:
            - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
            - ./src:/var/www/
        depends_on:
            - php

    php:
        build: ./docker/php
        volumes:
            - ./src:/var/www/

    mysql:
        image: mysql:8.0.26
        environment:
            MYSQL_ROOT_PASSWORD: root
            MYSQL_DATABASE: laravel_db
            MYSQL_USER: laravel_user
            MYSQL_PASSWORD: laravel_pass
        command:
            mysqld --default-authentication-plugin=mysql_native_password
        volumes:
            - ./docker/mysql/data:/var/lib/mysql
            - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf

    phpmyadmin:
        image: phpmyadmin/phpmyadmin
        environment:
            - PMA_ARBITRARY=1
            - PMA_HOST=mysql
            - PMA_USER=laravel_user
            - PMA_PASSWORD=laravel_pass
        depends_on:
            - mysql
        ports:
            - 8080:80
    mailhog:
        image: mailhog/mailhog
        ports:
            - "1025:1025"
            - "8025:8025"

このファイルでは、Dockerのコンテナに必要な情報を記述しています。詳細は省きますが、nginxはWebサーバー用のソフトウェアで、Laravelで記述したWebサイトを表示できるようにするものです。phpはLaravelを動かすのに必要なソフトウェアであり、プログラミング言語です。mysqlはデータベースです。phpmyadminはmysqlのデータを外部から操作するツールです。mailhogは、Laravelが送信したメールを閲覧するのに使用するツールです。Dockerではこのほかにも様々な機能を追加できますが、このコースでは、以上の5つを使用します。

my.cnfファイル

次に、my.cnfファイルです。このファイルはdockerフォルダの中のmysqlフォルダの中に配置します。このままコピーして使用しても構いません。

[mysqld]
character-set-server = utf8mb4

collation-server = utf8mb4_unicode_ci

default-time-zone = 'Asia/Tokyo'

このファイルはmysqlでデータベースを扱うために必要な初期設定を行っています。これは、エンコード、並び替えのルール、タイムゾーンの指定を行っています。

default.confファイル

次に、default.confファイルです。このファイルはdockerフォルダの中のnginxフォルダの中に配置します。このままコピーして使用しても構いません。

server {
    listen 80;
    index index.php index.html;
    server_name localhost;

    root /var/www/public;

    location / {
        try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

このファイルはnginxの設定ファイルです。Webサーバーが特定のリクエストをどのように処理するかを定義しています。

Dockerfileファイル

次に、Dockerfileファイルです。このファイルはdockerフォルダの中のphpフォルダの中に配置します。このままコピーして使用しても構いません。

FROM php:8.2.12-fpm

COPY php.ini /usr/local/etc/php/

RUN apt update \
  && apt install -y default-mysql-client zlib1g-dev libzip-dev unzip \
  && docker-php-ext-install pdo_mysql zip

RUN curl -sS https://getcomposer.org/installer | php \
  && mv composer.phar /usr/local/bin/composer \
  && composer self-update

WORKDIR /var/www

このファイルはPHPサーバー用のコンテナを作るために必要なコマンドを記述したものです。

最初の行で、phpの8.2.12を指定してインストールし、次の行で、PHPの設定ファイルをコンテナにコピーします。次の行で、必要なパッケージをPHPサーバーにインストールします。次の行でComposerと呼ばれるPHPの依存管理ツールをインストールし、次の行で作業ディレクトリを指定しています。

php.iniファイル

次に、php.initファイルです。このファイルはdockerフォルダの中のphpフォルダの中に配置します。このままコピーして使用しても構いません。

date.timezone = "Asia/Tokyo"

[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

このファイルはPHPサーバーの設定ファイルです。タイムゾーンや文字コード、言語を指定しています。

以下のようなフォルダ構成になっていれば問題ありません。

│ compose.yml

└─docker
├─mysql
│ │ my.cnf
│ │
│ └─data
├─nginx
│ default.conf

└─php
  Dockerfile
  php.ini

以上で必要なファイルはそろいました。次はターミナルを使用してLaravelをインストールしてみましょう。

コメントを残す

CAPTCHA