0
2

More than 3 years have passed since last update.

【Laravel+MySQL+Docker+nginx】Laravel開発環境をDockerで構築する手順

Last updated at Posted at 2020-06-18

はじめに

Laravelの勉強するための開発環境作成手順メモです。
自分用なので雑い。

準備

Dockerの設定だったりしていきます。

ディレクトリ

プロジェクトディレクトリ配下に以下2つのディレクトリを作成。

  • Docker
  • server

docker-compose.yml

プロジェクトディレクトリ配下にdocker-compose.ymlファイルを作成。

docker-compose.yml
version: '3'

services:
  php:
    container_name: php
    build: ./docker/php
    volumes:
      - ./server:/var/www

  nginx:
    image: nginx
    container_name: nginx
    ports:
      - 80:80
    volumes:
      - ./server:/var/www
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php

  db:
    image: mysql:5.7
    container_name: db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: test_db
      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:
      - 4306:3306

Dockerfile

Dockerディレクトリ配下にphpフォルダを作成。
その中にDockerfileを作成。

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

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

#Composer install
COPY --from=composer:latest /usr/bin/composer /usr/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"

PHPの設定

Dockerfileと同階層でphp.iniファイルを作成。

php.ini
[Date]
date.timezone = "Asia/Tokyo"
[mbstring]
mbstring.internal_encoding = "UTF-8"
mbstring.language = "Japanese"

nginx

Dockerディレクトリにnginxフォルダを作成。
その中にdefault.confファイルを作成。

default.conf
server {
  listen 80;

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

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

MySQL

Dockerディレクトリにdbフォルダを作成。
その中にmy.cnfファイルを作成。

my.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci

[client]
default-character-set=utf8mb4

Laravelプロジェクト

プロジェクトのルートディレクトリに移動。
以下コマンドを実行。

docker-compose up -d
docker-compose exec php bash
laravel new

確認

locallhostで画面が表示されれば成功。
やったね。

DB設定

dockerで開発環境を作った場合、.envファイルとdocker-compose.ymlファイルの情報を合わせとかないとmigrateできなかったりとめんどくさいので今やっとく。

DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=test_db
DB_USERNAME=root
DB_PASSWORD=root

これでDBの登録も問題なし。

まとめ

自分用メモなのでめちゃくちゃざっくりしてますが参考になれば。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2