ブログ
 

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

       

 

この記事では、Dockerを使って最小限でローカル開発環境を構築する方法をご紹介します。

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

  • Laravel 8.x
  • Nginx
  • MySQL 8.0
  • PHP 8.1.4

前提条件

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

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

https://www.docker.com/products/docker-desktop/

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

最終的なディレクトリは以下になります。

.
├── blog
└── docker-compose
   ├── docker
   │   ├── mail
   │   │   └── Dockerfile
   │   ├── mysql
   │   ├── nginx
   │   │   └── default.conf
   │   └── php
   │       ├── Dockerfile
   │       └── php.ini
   └── docker-compose.yml

Laravelアプリを作成

composer create-project --prefer-dist laravel/laravel blog "8.*"

以下のように表示ができたらlaravelアプリの作成が成功になります。

アプリ(blog)/storage以下に書き込み権限を付けます。

sudo chmod -R 777 storage   

docker-compose.ymlの設定

version: '3'

services:
php:
  build: ./docker/php
  depends_on:
    - db
  volumes:
    - ../blog:/var/www/html:cached

web:
  image: nginx
  ports:
    - 80:80
  depends_on:
    - php
  volumes:
    - ../blog:/var/www/html:cached
    - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf

mail:
  build:
    context: ./docker/mail
    dockerfile: Dockerfile
  container_name: "mail"
  image: "mail"
  ports:
    - "8025:8025"

db:
  platform: linux/x86_64 # M1チップ対応のため追記
  image: mysql:8.0.28
  ports:
    - 3306:3306
  environment:
    MYSQL_ROOT_PASSWORD: password
  volumes:
    - ./docker/mysql/db-data:/var/lib/mysql
volumes:
  test:
  driver: local

mail > DockerFileの設定

FROM mailhog/mailhog:latest

nginx > default.confの設定

server {
   listen 80;

   root /var/www/html/public;
   index index.php index.html;

   access_log /var/log/nginx/access.log;
   error_log /var/log/nginx/error.log;
   client_max_body_size 20m;
   #fastcgi_read_timeout 300;

   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;
   }
}

php > DockerFileの設定

FROM php:8.1.4-fpm

ADD php.ini /usr/local/etc/php/

RUN cd /usr/bin && curl -s http://getcomposer.org/installer | php \
   && ln -s /usr/bin/composer.phar /usr/bin/composer \
   && apt update \
   && apt install -y zip unzip libpng-dev libpq-dev \
   && curl -sL https://deb.nodesource.com/setup_12.x | bash - \
   && apt install -y nodejs \
   && docker-php-ext-install pdo_mysql

php > php.iniの設定

[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.language = "Japanese"

コンテナの立ち上げ

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

docker-compose up -d

以下のコマンドでコンテナがちゃんと立ち上がってるかを確認します。

docker-compose ps

upが表示されたらエラーなしで立ち上がっています。

Creating docker-compose_db_1 ... done

Creating mail                ... done

Creating docker-compose_php_1 ... done

Creating docker-compose_web_1 ... done

ブラウザでlocalhostで確認する

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

今回は以上となります。

この記事が少しでもDockerでLaravelの開発環境を構築する際の参考になっていれば幸いです。

 
  • このエントリーをはてなブックマークに追加