Blogブログ

TORAT | 2022.5.26

Laravel開発環境をDockerを使って構築する(LEMP環境)

  • Laravel
  • 開発環境

今回はDocker, docker-composeを使ってローカルに以下の環境を構築します。(LEMP環境)

  • Laravel 8.0
  • PHP 8.0
  • Nginx
  • MySQL 5.7

前提条件

  • Docker がローカルにインストールされている
  • Docker Compose がローカルにインストールされている

使用するOSによってdockerのインストール方法が異なりますので、公式サイトよりダウンロードしてください。

はじめに

まず初めに、プロジェクト用のディレクトリを作成します。

名前はなんでも構いませんが、laravel_dockerという名前の新しいディレクトリを作成しました。

mkdir laravel_docker
cd laravel_docker

環境構築用のディレクトリ作成

次に、先ほど作成したディレクトリ(laravel_docker)に以下のような構造を作成してください

docker-compose.ymlの設定

docker-compose.ymlを設定しましょう。

touch docker-compose.yml

docker-compose.ymlは、複数のコンテナをまとめて立ち上げて管理するためのファイルです。イメージを複数指定することで、複数のコンテナを立ち上げることが可能となります。

version: '3'
services:
  app:
    container_name: app  
    build: ./docker/php
    volumes:
      - .:/var/www
  nginx:
    image: nginx 
    container_name: nginx
    ports:
      - 8000:80 
    volumes:
      - .:/var/www
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    working_dir: /var/www
    depends_on:
      - app
  db:
    image: mysql:5.7 
    container_name: db
    environment: 
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: database
      MYSQL_USER: db-user
      MYSQL_PASSWORD: db-pass
      TZ: 'Asia/Tokyo' 
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:  
      - ./docker/db/data:/var/lib/mysql
      - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf 
      - ./docker/db/sql:/docker-entrypoint-initdb.d
    ports:
      - 3306:3306

container_nameでは、コンテナ名を明示的に指定します。ここに指定した名前が、docker-compose psしたときにNameとして表示されます。

MySQLのデフォルトポート番号は3306のため、今回は3306を指定しています。

php > php.iniの設定

php.iniの設定をしましょう。

php.iniは、phpの設定ファイルです。

mkdir php && cd php
touch php.ini Dokerfile
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"
[opcache]
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
opcache.enable_cli=1

php > Dockerfileの設定

次にPHPのDockerfileの設定です。

Dockerfileとは要は、「image(コンテナの素)を生成するファイル」です。

FROM php:8.0-fpm
COPY php.ini /usr/local/etc/php/

RUN apt-get update \
  && apt-get install -y zlib1g-dev mariadb-client vim libzip-dev \
  && docker-php-ext-install zip pdo_mysql

#Composer install
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php
RUN php -r "unlink('composer-setup.php');"
RUN mv composer.phar /usr/local/bin/composer

ENV COMPOSER_ALLOW_SUPERUSER 1

ENV COMPOSER_HOME /composer

ENV PATH $PATH:/composer/vendor/bin


WORKDIR /var/www

RUN composer global require "laravel/installer"

nginx > default.confの設定

次に、default.confでNginxの設定をします。

mkdir nginx && cd nginx
touch default.conf
server {
  listen 80;
  root /var/www/laravel-project/public;
  index index.php;
  location / {
    root /var/www/laravel-project/public;
    index index.php;
    try_files $uri $uri/ /index.php$query_string;
  }
  location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass app:9000; 
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
  }
}

コンテナの立ち上げ

以上までのファイルが設定できましたらコンテナを立ち上げます。

docker-compose up -d

さまざまな処理が終わると、以下のコマンドでコンテナが立ち上がっているかを確認することができます。

docker-compose ps

全てのコンテナのStateがUpになっていたらコンテナはちゃんと立ち上がっています。

Laravelアプリを作成

コンテナの中に入りLaravelのアプリを作成していきます。

docker-compose exec app bash

コンテナ内で以下のコマンドを入力してください。

composer create-project --prefer-dist laravel/laravel laravel-project "6.*"

すると、/var/www以下に、以下のようにLaravelアプリが作成されます(laravel-project)。

ブラウザでLravel画面の確認

実際にブラウザでLravel画面が表示される確認します。

localhost:8000

8000は、nginxのところに設定したポート番号です

上記のようにLaravelのwelcomeページが表示されると成功です。

この記事を書いた人

TORAT 管理者

関連記事

Recommend愛されているブログ