PHP/Laravel

【簡単で爆速】Laravel開発環境をDockerで構築【わかりやすく解説】

こんにちは、シロウです。

最近、自作のWordpressテーマが完成したので、またLaravelでWebアプリを作っていこうと考えたのですが、AWSが凄く使いにくい。

そこで色々と調べてみると、何やらDockerを使うのが最近の流行だそうで。

ということで、Dockerを使って環境開発をしてみたのでその記録を残しておきます。

しろう
しろう
誰でもわかるように出来るだけ丁寧に解説していきます!

ちなみに今回の記事の大部分は

【初心者向け】20分でLaravel開発環境を爆速構築するDockerハンズオンを参考にさせて頂きましたm(_ _)m

それでは早速ですが、環境開発を行っていきましょう!

事前準備

まずは事前準備としてGithubの連携とDockerのダウンロードをします。

GitHubアカウントの作成

まだGitHubのアカウントを持っていない人は「こちら」からアクセスしてサクッと作成しましょう。

Gitの初期設定

まずは下記コードを実行してみてください。
//下記コードを実行
$ git config --list | grep user

//実行結果
user.name=シロウ
user.email=siro1@gmail.com

上記の実行結果のように「user.name」と「user.email」が設定されているならOKです。(名前とメールアドレスは架空です。笑)

もし設定されていないなら下記のコマンドを実行して、設定してください。

「Gitをインストールしたら真っ先にやっておくべき初期設定」この記事とかgitの初期設定の参考になると思います。

//下記コマンドで名前を登録
$ git config --global user.name "登録したい名前 苗字"

//下記コマンドでメールアドレスを登録
$ git config --global user.email "登録したい@メールアドレス.com"

GitHub SSH接続設定の確認

次にGitHub SSH接続設定の確認を行うため下記コマンドを実行してください。
これが設定されていればリモートリポジトリにプッシュするのが少し楽になります。

//GitHub SSH接続設定を確認
$ ssh -T github.com

//↓実行結果
Hi (gitHubのユーザー名)! You've successfully authenticated, but GitHub does not provide shell access.

上記のように「successfully」と表示されればOKです!
Warningも出ている人は気にしなくてOKです。

ただ「successfully」が表示されていないのはSSH接続設定が出来ていないということなので、下記を読み進めて設定してください。
*設定出来ている人は読み飛ばしてください!

GitHub SSH接続設定をする(未設定の人用)

//実行結果
Warning: Permanently added the RSA host key for IP address '52.192.72.89' to the list of known hosts.

上記のように「successfuly」が表示されていないのはSSH接続設定が上手く設定ができていないので、初期設定を行っていきます。
*「こちら」のサイトを参考にしました。

ちなみに下記のようにGitHubにの「…or create a new repository on the command line」の下に書かれているコマンドを一行ずつ実行すればいいだけです。

GitHubのSSH接続設定

まずは下記コマンドで「GitHub用の鍵」を作成します。

//下記コマンドで秘密鍵を作成
//最後にメールアドレスを入力してください。
$ ssh-keygen -t ed25519 -N "" -f ~/.ssh/github -C ここにGitHubに登録したメールアドレスを記述

//↓実行結果
Generating public/private ed25519 key pair.
Your identification has been saved in /Users/名前/.ssh/github.
Your public key has been saved in /Users/名前/.ssh/github.pub.
The key fingerprint is:
SHA256:3kdYqdrQTzhSuY5QUtUfKfdasfdsafdsfadsfda(←こんな感じの文字の羅列) メールアドレス
The key's randomart image is:
+--[ED25519 256]--+
|      . o.+o=o . |
|     . + . *o..|
|      o  + *oE.o|
|       o = * =.. |
|      . S @ + .  |
|       o @ X .   |
|        + O * .  |
|           = .   |
|                 |
+----[SHA256]-----+

こんな感じの意味不明な文字の羅列が出力されますが、どうやらこれでOKぽい。(ちょこちょこ日本語が加えられているのはわかりやすいように僕が追記しているだけで実行結果で日本語が表示されることはありません。)

次に秘密の鍵をクリップボードにコピーするために下記コードを実行。

$ pbcopy < ~/.ssh/github.pub

これで秘密の鍵をコピーできる。こいつをgitHubに登録していきます。まずは「https://github.com/settings/keys」にアクセス。

githubのssh keys設定

「New SSH key」をクリックすると、上記画像のページに遷移しますので、

  • Title→適当にタイトルを入力(使用しているPCとかでOK)
  • Key→さっきコピペした秘密の鍵

上記を入力して、「Add SSH key」をクリックすればGitHubへの設定は完了です。

次に「~/.ssh/config 」へ追記します。接続設定を追記します。
具体的には下記コマンドを順に実行すればOK。

//下記コマンドで「.env」ファイルを編集する。
$ vi ~/.ssh/config

//最初はコマンドモード(入力ができないモード)のはずなのでキーボード上の「escape(左上のボタン)」を押して、入力モードに切り替える。
//切り替えたら下記コードを記述
Host github.com
  IdentityFile ~/.ssh/github
  User git

//また「escape」を押して、コマンドモードに切り替えたら下記コマンドを実行。
//下記コマンドでviエディタを保存&終了
:wq

「vi」コマンドについては「VIM (Vi) をターミナルで操作 / Mac OS X」こちらがわかりやすいかと。

次に下記コードを実行して、SSH接続されているか確認。

$ ssh -T github.com

下記のように表示されればOKです。「Warning~~~」とかも一緒に表示される人もいるかもしれませんが、それは無視で問題ありません。

Hi (gitHubのユーザー名)! You've successfully authenticated, but GitHub does not provide shell access.

docker, docker-compose をインストール

次にDokerをダウンロードします。とりあえず「https://hub.docker.com/editions/community/docker-ce-desktop-mac/」(Mac用のリンク)にアクセス。

上記画面にアクセスできたら「Get Stable」をクリックして、ダウンロードを開始。

ダウンロードを開始して、色々と進めていたら下記画像のような表示になると思いますが、パスワード入力してダウンロードを続行です。

これでダウンロード出来ているはずなので、下記コマンドでいいとう確認してください。

//↓dockerのバージョン確認
$ docker --version
//↓実行結果
Docker version 19.03.8, build afacb8b

//↓dockerのcomposerのバージョン確認
$ docker-compose --version
//↓実行結果
docker-compose version 1.25.5, build 8a1c60f6

あとは画面上のツールバーに船マークが追加されていることだと思うので、そいつをクリックして「running」になっているか確認してください。

Dockerの起動確認

Laravelの開発環境をDockerで構築していく

ここからはターミナルのコマンドも解説していきますが、わからないところは「Macのターミナルコマンド一覧(基本編)」を確認しながら見ていただければと思いますm(_ _)mまずは作業をするディレクトリを作成します。

作業ディレクトリを作成

ディレクトリを作成するには「mkdir ディレクトリ名」です。
*「pwd」と入力すれば現在のディレクトリ位置がわかり、「cd ディレクトリ名」で現在のディレクトリ位置を移動できるので、お好みの階層にディレクトリを作成してください。

//ディレクトリを作成(「docker-laravel-sample」は各自好きな名前に変えてOK)
$ mkdir docker-laravel-sample

次に作成したディレクトリに「cd」コマンドを使って移動します。

//ディレクトリ移動(「docker-laravel-sample」はさっき作ったディレクトリ名)
$ cd docker-laravel-sample

そして「docker-laravel-sample」ディレクトリ以下の最終階層は下記の通りです。

├── README.md
├── docker
│   ├── mysql
│   │   └── my.cnf
│   ├── nginx
│   │   └── default.conf
│   └── php
│       ├── Dockerfile
│       └── php.ini
├── docker-compose.yml
├── logs
│   ├── access.log
│   ├── error.log
│   ├── mysql-error.log
│   ├── mysql-query.log
│   ├── mysql-slow.log
│   └── php-error.log
└── src
    └── readme.md

リモートリポジトリを作成

次にリモートリポジトリを作成しましょう。

https://github.com/new」にアクセスして、適当に名前を付けてリモートリポジトリを作成してください。(*さっき作った作業ディレクトリ名と同じとすればわかりやすいです。)

GitHubのリモートリポジトリを作成

リモートリポジトリへ初回コミット&プッシュ

次にターミナルからコマンドでファイルを作って、gitにコミット&プッシュします。
下記の画像の赤枠の行を一つずつ実行していけばいいだけなので簡単ですね(*・ω・)ノ

GitHubの画像

一気にコマンドを羅列しますので、一行ずつ実行していってください。

//下記コードで「README.md」ファイルを作成
$ echo "# docker-laravel-handson" > README.md

//下記コードで「.gitignore」ファイルを作成
$ echo "/logs" > .gitignore

//下記コードでリポジトリを作成
$ git init

//下記コードで変更したファイルをステージングに登録する
$ git add .

//下記コードでコミットする
$ git commit -m "first commit"

//下記コードでリモートリポジトリと登録
$ git remote add origin https://github.com/SHIRO-11/docker-laravel-sample.git

//下記コードでリモートリポジトリでプッシュする
$ git push -u origin master

とりあえずここまで出来れば、コミットまでは終了です。

ファイルを作成する時は「echo “ファイルの中に記述するテキスト” > ファイル名」でOK。

gitにコミットするには、一番最初だけローカルリポジトリを作成する必要があるので「git init」でリポジトリ作成します。

その後は【「git add .」で変更した全ファイルをステージングに登録 → 「git commit -m “コメント(コミット内容をわかりやすくするテキスト)”」】の手順でOK。

次にリモートリポジトリ(さっきgitHubで作った)にプッシュします。
まぁ、この辺はコピペでどんどん進んで行きいましょう。笑

環境ファイル(.env)を作成

ここからは環境変数を設定するファイルを作成していきます。

空のファイルを作成するには「touch ファイル名」を利用します。

//下記コマンドで「.env」ファイルを作成する
$ touch .env

次に今作った「envファイル」の中身に環境変数を設定する記述を追加していきます。(viエディタを使うので少しわかりにくいですが、また丁寧に解説します(*´ω`*)ノ)

とりあえず下記コマンドを実行していきましょう。

//下記コードを実行。viエディタで「.env」ファイルを編集する。
$ vi .env

//最初はコマンドモード(入力ができないモード)のはずなので「escape(左上のボタン)」を押して、入力モードに切り替え。
//切り替えたら下記を記述
DB_NAME=homestead
DB_USER=homestead
DB_PASS=secret
TZ=Asia/Tokyo

//編集が終わったら「escape」を押して、コマンドモードに切り替え下記コマンドでviエディタを保存&終了
:wq

viエディタってターミナルに慣れていない人だと「えっ、なんかコマンド入力できないんだけど…」ってなると思いますが、キーボード上の「esc」を押せば編集できるようになります。

アプリケーションサーバ(app)コンテナを作る

続いてアプリケーションサーバ(app)コンテナを作成していきます。

ディレクトリ構成

.
├── docker
│   └── php
│       ├── Dockerfile
│       └── php.ini # PHPの設定ファイル
├── docker-compose.yml
├── logs
│   └── php-error.log
└── src # Laravelをインストールするディレクトリ

「docker-compose.yml」ファイルを作成

さて、次に「docker-compose.yml」を作成&編集していきます。

まずは下記コマンドでファイルを作成。

//「docker-compose.yml」ファイルを作成
$ touch docker-compose.yml

次にまたviエディタを使って、ファイルを編集していきます。

//下記コマンドを実行して、viエディタを開く
$ vi docker-compose.yml

//「esc」を押して、入力モードに切り替えて、下記を記述。
//「docker-compose.yml」ファイル内では半角が意味を持つので注意してコピペする。
version: "3"
services:
  app:
    build:
      context: ./docker/php
      args:
        - TZ=${TZ}
    volumes:
      - ./src:/work
      - ./logs:/var/log/php
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    working_dir: /work
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_DATABASE=${DB_NAME}
      - DB_USERNAME=${DB_USER}
      - DB_PASSWORD=${DB_PASS}
      - TZ=${TZ}

//「esq」を押して、コマンドモードに切り変えて、下記を実行
:wq

これでファイルの作成と編集は終了です。

docker/php/Dockerfile

次に「Dockerfile」ファイルを作成します。

このファイルでは

  • タイムゾーン設定
  • Composerコマンドのインストール
  • Laravelで必要なPHP拡張機能のインストール

とかの設定を記述します。

まぁとりあえず下記コマンドを実行していきます。

//下記コードでディレクトリ作成
$ mkdir -p docker/php

//下記コードで空のファイルを作成
$ touch docker/php/Dockerfile

//次にviエディタを開く
$ vi docker/php/Dockerfile

//「esc」を押して、入力モードに切り替えて、下記を記述。
FROM php:7.3.0-fpm-alpine3.8
LABEL maintainer "your-name"

ARG TZ
ENV COMPOSER_ALLOW_SUPERUSER 1
ENV COMPOSER_HOME /composer

RUN set -eux && 
  apk add --update-cache --no-cache --virtual=.build-dependencies tzdata && 
  cp /usr/share/zoneinfo/${TZ} /etc/localtime && 
  apk del .build-dependencies && 
  docker-php-ext-install bcmath pdo_mysql && 
  curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer && 
  composer config -g repos.packagist composer https://packagist.jp && 
  composer global require hirak/prestissimo

//「esq」を押して、コマンドモードに切り変えて、下記を実行
:wq

参考記事内では
「FROM php:7.3.0-fpm-alpine3.8」が
「FROM php:7.3.0-fpm-alpine」となっていましたが、これだと上手くいかなかったので3.8を追記しました。

docker/php/php.ini

次に「php.ini」ファイルを作成します。

このファイルでは

  • PHPエラーメッセージの設定
  • PHPエラーログの設定
  • メモリ等の設定(お好みで)
  • タイムゾーン設定
  • 文字コード設定

とかの設定を記述します。

//下記コードを実行してファイルを作成
$ touch docker/php/php.ini

//次にviエディタを開く
$ vi docker/php/php.ini

//「esc」を押して、入力モードに切り替えて、下記を記述。
error_reporting = E_ERROR | E_WARNING | E_PARSE | E_NOTICE
display_errors = stdout
display_startup_errors = on
log_errors = on
error_log = /var/log/php/php-error.log
upload_max_filesize = -1
memory_limit = -1
post_max_size = 100M
max_execution_time = 900
max_input_vars = 100000
default_charset = UTF-8

[Date]
date.timezone = ${TZ}

[mbstring]
mbstring.language = Japanese

//「esq」を押して、コマンドモードに切り変えて、下記を実行
:wq

build&up

次にbuild&upしていきます。

下記コードを実行すると色々とインストールされたりして、少し時間がかかるのでのんびり待ちます。

$ docker-compose up -d --build

インストールが終わったら、次は下記コマンドを実行。
実行結果と同じような感じになっていたらOKです。

//下記コマンドでコンテナ一覧を表示。
$ docker-compose ps

//↓実行結果
           Name                       Command            State    Ports  
-------------------------------------------------------------------------
docker-laravel-              docker-php-entrypoint       Up      9000/tcp
sample_app_1                 php-fpm   

コンテナに入ってphpの操作確認

試しにコンテナに入って、phpを操作します。

//下記コードでコンテナの中に入る。
$ docker-compose exec app ash

//今までは「~~$」みたいだったのがコンテナ内では「/work #」になってますが、気にせず「#」の後に「php -v」を入力
/work # php -v

//実行結果(多少違いがあると思います。)
PHP 7.3.0 (cli) (built: Dec 21 2018 01:48:02) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies

上記のように実行結果がいい感じに表示されていれば成功です。

とりあえず、ここらで一旦コミットしておきましょう。

//変更したファイルを確認
$ git status

//変更した全てのファイルをステージングに登録
$ git add .

//ステージングできているか確認(緑になってたらOK)
$ git status

//コミット
$ git commit -m "feat create docker app container"

//一応、コミット履歴を見とく
$ git log

ウェブサーバー(web)コンテナを作る

次にnginxウェブサーバーコンテナを作成します。

ディレクトリ構成

.
├── docker
│   └── nginx
│       └── default.conf # nginxの設定ファイル
├── docker-compose.yml
├── logs
│   ├── access.log # nginxのアクセスログ
│   └── error.log # nginxのエラーログ
└── src
    └── public # 動作確認用に作成
        ├── index.html # HTML動作確認用
        └── phpinfo.php # PHP動作確認用

ディレクトリ構成はこんな感じになっています。

docker-compose.ymlに追記

「docker-compose.yml」に追加していきます。

//下記コードを実行して、viエディタを開く
$ vi docker-compose.yml

//「esc」を押して、入力モードに切り替えて、下記を追記。
//半角が意味を持つので注意してコピペする。
  web:
    image: nginx:1.17-alpine
    depends_on:
      - app
    ports:
      - 10080:80
    volumes:
      - ./src:/work
      - ./logs:/var/log/nginx
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    environment:
      - TZ=${TZ}

//「esq」を押して、コマンドモードに切り変えて、下記を実行
:wq

半角スペースの違いで思わぬ動作になることがあるので注意してください。
インデントレベルはappと同じにしてください。

一応下記に「docker-compose.yml」の全文を表示しておきます。

version: "3"
services:
  app:
    build:
      context: ./docker/php
      args:
        - TZ=${TZ}
    volumes:
      - ./src:/work
      - ./logs:/var/log/php
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    working_dir: /work
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_DATABASE=${DB_NAME}
      - DB_USERNAME=${DB_USER}
      - DB_PASSWORD=${DB_PASS}
      - TZ=${TZ}
  web:
    image: nginx:1.17-alpine
    depends_on:
      - app
    ports:
      - 10080:80
    volumes:
      - ./src:/work
      - ./logs:/var/log/nginx
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    environment:
      - TZ=${TZ}

「docker/nginx/default.conf」を作成

下記コマンドを実行して「default.conf」ファイルを作成します。
僕もあまりこのファイルで何を設定しているのか知りませんが、とりあえず

//ディレクトリ作成
$ mkdir docker/nginx

//ファイルを作成
$ touch docker/nginx/default.confdocker

//今まで解説してきた流れと同じように「$ vi docker/nginx/default.confdocker
」としてviエディタ開いて、下記コードを追加して、「:wq」で保存・終了する。
server {
    listen 80;
    root /work/public;
    index index.php;
    charset utf-8;

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

    location ~ .php$ {
        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;
    }
}

build & up

次に下記コマンドを実行。ちょっとインストールまでに時間がかかると思いますが、のんびり待ちましょう。

//一度Dockerを停止
$ docker-compose down

//下記コマンド実行で色々とインストールされる
$ docker-compose up -d --build

//下記コマンドを実行して、コンテナを確認
$ docker-compose ps

//↑のコマンドの実行結果↓
        Name                 Command          State          Ports       
-------------------------------------------------------------------------
docker-laravel-        docker-php-            Up      9000/tcp           
sample_app_1           entrypoint php-fpm                                
docker-laravel-        nginx -g daemon off;   Up      0.0.0.0:10080->80/t
sample_web_1                                          cp   

nginxのバージョン確認

//nginxのバージョン確認
$ docker-compose exec web nginx -v

//実行結果↓(多少違いあるかも)
$ nginx version: nginx/1.17.10

webコンテナの確認

さて、次にコンテナがきちんと動作しているか確認していきましょう。

//publicディレクトリ作成
$ mkdir src/public

//「Hello World」の入ったindex.htmlを作成
$ echo "Hello World" > src/public/index.html

//phpの情報が入ったphpinfo.phpを作成
$ echo "<?php phpinfo();" > src/public/phpinfo.php

上記コードを実行したら下記の2つへアクセス。
http://127.0.0.1:10080/index.html
http://127.0.0.1:10080/phpinfo.php
上手くいってるなら、下記画像のように表示されるはず。

index.html
php情報

そして、今作ったファイルは確認用なので、確認できたら下記コマンドで削除する。

//今作ったファイル(srcディレクトリ直下の全ファイル)を削除する
$ rm -rf src/*

変更内容をコミット

それと一応、コミットしておく。

//変更したファイルを確認
$ git status

//変更した全てのファイルをステージングに登録
$ git add .

//ステージングできているか確認(緑になってたらOK)
$ git status

//コミット
$ git commit -m "feat create docker app container"

//一応、コミット履歴を見とく
$ git log

Laravelをインストールする

さて、いよいよもう少しです。頑張りましょう。

下記コマンドを実行してLaravelをインストールしてください。

//コンテナに入る
$ docker-compose exec app ash

//Laravelをインストール(インストールにちょっと時間かかります。)
# composer create-project --prefer-dist "laravel/laravel=6.0.*" .

//Laravelのバージョンを確認
# php artisan -V
Laravel Framework 6.0.4

//コンテナから出る
# exit

Laravelが表示されるか確認

さて、ここまでくればLaravelが無事表示されるはずなので、「http://127.0.0.1:10080」にアクセスしてトップ画面が表示されるか確認してください。

Laravelのトップ画面

表示されているなら後少しで環境開発が完了するので頑張っていきましょう!

データベース(db)コンテナを作る

MySQLデータベースコンテナを作成していきます。

docker-compose.ymlに追加

「docker-compose.yml」ファイルに下記を追加してください。(今まで解説したようにviエディタを使えばOKです。)
注意点として「volumes:」はインデントなしで記述します。

  db:
    image: mysql:8.0
    volumes:
      - db-store:/var/lib/mysql
      - ./logs:/var/log/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - TZ=${TZ}

volumes:
  db-store:

「docker-compose.yml」ファイルの全文は下記の通りです。

version: "3"
services:
  app:
    build:
      context: ./docker/php
      args:
        - TZ=${TZ}
    volumes:
      - ./src:/work
      - ./logs:/var/log/php
      - ./docker/php/php.ini:/usr/local/etc/php/php.ini
    working_dir: /work
    environment:
      - DB_CONNECTION=mysql
      - DB_HOST=db
      - DB_DATABASE=${DB_NAME}
      - DB_USERNAME=${DB_USER}
      - DB_PASSWORD=${DB_PASS}
      - TZ=${TZ}
  web:
    image: nginx:1.17-alpine
    depends_on:
      - app
    ports:
      - 10080:80
    volumes:
      - ./src:/work
      - ./logs:/var/log/nginx
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    environment:
      - TZ=${TZ}

  db:
    image: mysql:8.0
    volumes:
      - db-store:/var/lib/mysql
      - ./logs:/var/log/mysql
      - ./docker/mysql/my.cnf:/etc/mysql/conf.d/my.cnf
    environment:
      - MYSQL_DATABASE=${DB_NAME}
      - MYSQL_USER=${DB_USER}
      - MYSQL_PASSWORD=${DB_PASS}
      - MYSQL_ROOT_PASSWORD=${DB_PASS}
      - TZ=${TZ}

volumes:
  db-store:

docker/mysql/my.cnfを作成&修正

下記コードを実行して「my.cnf」ファイルを作成します。

//mysqlディレクトリを作成
$ mkdir docker/mysql

//my.confファイルを作成
$ touch docker/mysql/my.cnf

今作った「my.conf」ファイルに下記を追記。(今まで解説したようにviエディタを使えばOKです)

[mysqld]
# character set / collation
character-set-server = utf8mb4
collation-server = utf8mb4_bin

# timezone
default-time-zone = SYSTEM
log_timestamps = SYSTEM

# MySQL8 caching_sha2_password to mysql_native_password
default-authentication-plugin = mysql_native_password

# Error Log
log-error = /var/log/mysql/mysql-error.log

# Slow Query Log
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 5.0
log_queries_not_using_indexes = 0

# General Log
general_log = 1
general_log_file = /var/log/mysql/mysql-query.log

[mysql]
default-character-set = utf8mb4

[client]
default-character-set = utf8mb4

build&up

//Dockerを停止
$ docker-compose down

//bild&up(少し時間がかかります)
$ docker-compose up -d --build

//コンテナの確認
$ docker-compose ps

//実行結果
           Name                          Command              State           Ports        
-------------------------------------------------------------------------------------------
docker-laravel-sample_app_1   docker-php-entrypoint php-fpm   Up      9000/tcp             
docker-laravel-sample_db_1    docker-entrypoint.sh mysqld     Up      3306/tcp, 33060/tcp  
docker-laravel-sample_web_1   nginx -g daemon off;            Up      0.0.0.0:10080->80/tcp

マイグレーションファイルを実行

//コンテナに入る
$ docker-compose exec app ash

//migrateを実行
# php artisan migrate

//コンテナから出る
# exit

これで一通りLaravelをローカル環境で使えるようになりました。

忘れずにコミットしておきましょう。

//変更したファイルを確認
$ git status

//変更した全てのファイルをステージングに登録
$ git add .

//ステージングできているか確認(緑になってたらOK)
$ git status

//コミット
$ git commit -m "feat create docker app container"

//一応、コミット履歴を見とく
$ git log

//リモートにプッシュする
$ git push

最後に

結構大変だったと思いますが、これにてLaravelのローカル環境の構築は終了です!

今思うと、別にDockerでなくてXAMPとかでも良かったかなーとも思うのですが、まぁいい経験だったのでよし。

これを機に少しずつDockerの理解を深めていこうかなーとか思ってます。笑

少しでも皆さんの参考になれば幸いです(*´ω`*)ノ