【Laradock環境構築】Dockerインストール〜Laravelデフォルトページ表示まで②


はじめに

こちらの記事では、Laradockの環境構築として、
Dockerのインストール〜Laravelのデフォルトページ表示までを載せていきます。
※本記事はパート①の続きになります。

【Laradock環境構築】Dockerインストール〜Laravelデフォルトページ表示まで①
https://qiita.com/y-aimi/items/4fc3c65f85a103685238

前提条件

パート①でDockerのインストールが終わっている状態

プロジェクト用のディレクトリを作成

開発するアプリケーション用のディレクトリを作成します。

本記事ではecsiteとします。

以下のコマンドを実行。

//mkdirでディレクトリを作成。cdでecsiteのディレクトリに移動
$ mkdir ecsite
$ cd ecsite

ちなみに、どこでこのコマンドを実行すればいいの?という方は、

// ~ はルートディレクトリを表している
$ cd ~

でルートディレクトに移動すれば、下記の場所にecsiteというフォルダができるので
そちらで問題ないかと思います。

リポジトリのクローンを作成

LaradockのGithubのリポジトリをクローンします。
クローンしたらlaradockディレクトリに移動します。

以下のコマンドを実行。

$ git clone https://github.com/Laradock/laradock.git
$ cd laradock

試しに、
https://github.com/Laradock/laradock.git
をクリックしてGithubを見てみてください。

ここのクローンを先程作ったecsiteのディレクトリに作っているよー
ということですね!
そして、そのディレクトリに移動したということです。

Laradockの設定ファイル準備

Laradockのenv-example.envとしてコピーします。

/ecsite/laradock/で以下のコマンドを実行してください。

$ cp env-example .env

(cp はコピーという意味です。まんまですね。)

以下のコマンドを実行し、/ecsite/laradock/直下に.envファイルがあることを確認。

$ ls

次に作成した.envファイルをVimを使って編集していきます。
(Vimを使えば、いちいちフォルダを探して、ファイルを探して開いて編集・・・
をしなくてもターミナル上で編集できるのでラクです!)

/ecsite/laradock/で以下のコマンドを実行。

$ vi .env

するとターミナルでこんな画面がでます。

この画面は/ecsite/laradock/.envの編集画面です。

この画面上で i を押します。

下部に-- INSERT --と編集できるモードに切り替わるので、
この状態でファイルを編集していきます。

/ecsite/laradock/.envを以下のように編集してください。

### Paths #################################################

# Point to the path of your applications code on your host

# 次の行を編集
APP_CODE_PATH_HOST=../ecsite

# Point to where the `APP_CODE_PATH_HOST` should be in the container
APP_CODE_PATH_CONTAINER=/var/www

APP_CODE_PATH_HOSTの値が、
Laradockで動かすウェブアプリのディレクトリのパスになります。
(つまり、Laradockで動かす時にどのフォルダを使うの?それの場所をここに書いてね。ということです。)

次にescキーを押してコマンドモードに移行し、:wqを押し、
enterキーでファイルへの変更を保存し終了。
(":w"は保存、"q"は終了のVimコマンド→合わせて":wq"コマンドというわけですね)

次にウェブアプリのディレクトリを作っておきます。

以下のコマンドを実行。

$ mkdir ../ecsite

これで、現在のディレクトリは下記のようになっているかと思います。

ecsite
├── ecsite ←今作ったウェブアプリ用のディレクトリ
└── laradock ←序盤にクローンしたlaradock.gitのクローン

mysqlの認証方法の設定

mysqlのバージョンによっては、認証方法がデフォルトでは
なくなってしまっていることがあるので、
※変更の必要ない人は必要ないです。
(ちなみに私も変更しなくても良かったです。)

/ecsite/laradock/ディレクトリ内で以下のコマンドを実行し、vimを起動。

$ vi mysql/my.cnf

先程と同じように、iを押してINSERTモードに切り替え、
/ecsite/laradock/mysql/my.cnfを以下のように編集。

# The MySQL  Client configuration file.
# 
# For explanations see
# http://dev.mysql.com/doc/mysql/en/server-system-variables.html

[mysql]

[mysqld]
sql-mode="STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION"
character-set-server=utf8

# この行を追加(この文が元々ある人もいるかも?)
default_authentication_plugin=mysql_native_password

escキーを押してコマンドモードに移行し、
:wqを入力しenterキーでファイルの変更を保存し終了。

これでmysqlの準備は終了です。

Laradockのコンテナ起動

Laradockを使ってあらかじめ用意されている、
ウェブサーバー(nginx)とデータベースサーバー(mysql)のコンテナを起動します。

/ecsite/laradock/ディレクトリ内で以下のコマンドを実行します。

$ docker-compose up -d nginx mysql

そして、下記のように全部"done"になれば無事起動されています。

これで、ローカルのウェブサーバーとデータベースが起動しました!

workspaceコンテナのパッケージアップデート

つぎにworkspaceコンテナに入り、パッケージのアップデートをしておきます。

workspaceコンテナは開発に必要なツール等がインストールされているコンテナらしいです。
(Laradockのコンテナを起動すると自動的にworkspaceコンテナも起動します)

以下のコマンドでパッケージをアップデート。

$ docker exec -it laradock_workspace_1 bash
root@hoge:/var/www# apt-get update

(root@hogeの"hoge"は個人で違うかと思います。)

Laravelのセットアップ

最後にlaravelのセットアップをします。
workspaceコンテナに入ったまま、Laravelをインストール。

//こちらを参考にプロジェクト名を入れて実行
root@hoge:/var/www# composer create-project laravel/laravel [プロジェクト名]

//実例①
root@hoge:/var/www# composer create-project laravel/laravel ECsite

//実例②:laravelのバージョンを指定する際はこちらを参考に
root@hoge:/var/www# composer create-project laravel/laravel ECsite "5.8.*"

動作確認

下記のURLでLaravelのデフォルトページが表示されれば環境構築成功です!

エラー多発した!!

この環境構築、個人個人によって色んなエラーが出ることが多いです。
(エラーで苦戦して、やっぱLaradock使うのやめよう...と思った人もいるはず)

ちなみに、個人的にあるあるなのが、
Nginx 404not found
でデフォルトページが表示されないエラー。

おそらく原因は、/ecsite/laradock/.envで編集したこちらが正しくない可能性が高いです。
例えば、ディレクトリの構成を変えていたり、置く場所を変えていたりすると、
ここも変えなければいけません。

重要!

あ、エラーになってしまった!

よし、これを修正したら大丈夫なはず!!

...え、また同じエラー??

...え、しかも何かエラー増えてる?

.........わからん。

............オワタ。詰んだ。

となった方いませんか?
僕がまさにこの状態になって抜け出せなかったので、対処法を!!

以下のコマンドで、コンテナを再起動!!

$ docker-compose stop
$ docker-compose up -d nginx mysql

そしたら、エラー解消しました。
エラー箇所を正しく修正したとしても、再起動しないとエラーのままだったりするので、
困ったら再起動してみましょう。
それでもエラーが出るなら、何か修正点があるかと思いますので、
ボス戦の攻略法を探すような感じで、ググりましょう!

まとめ

環境構築って一番の壁だと思います。

わからないことだらけですし、これができないとその後の開発が何もできないし...

でも、個人的にはこの環境構築に苦戦して乗り越えると、
ただ開発するだけでは得られない知識が得られるので、
良い経験ができているなーと感じてます。

開発中のエラーがボス戦だとしたら、
環境構築のエラーはシークレットボス戦みたいな感じですかね!笑