LaravelをDocker環境で構築する。
Laravel
https://laravel.com/docs/5.5/installation
Docker
https://www.docker.com/
Laradock
http://laradock.io/
LaravelドキュメントではLaravel Homesteadが紹介されていますが、
今回はLaradockでLaravelをインストールし開発環境を構築していきます。
以前紹介したLaravelインストールではmacOSにインストールして起動するところまで紹介しました。今回はもう少しエンジニアっぽく開発環境を整えて本番環境を意識していこうかと思います。
Version
OS X El Capitan 10.11.6
Version 17.09.0-ce-mac35 (19611)
Laradock v5.8.2
Dockerはソフトウェアコンテナ内のアプリケーションのデプロイメントを自動化するオープンソースソフトウェアである。
Linuxカーネルにおける「libcontainer」と呼ばれるLinuxコンテナ技術とaufsのような特殊なファイルシステムを利用してコンテナ型の仮想化を行う。VMware製品などの完全仮想化を行うハイパーバイザー型製品と比べて、ディスク使用量は少なく、インスタンス作成やインスタンス起動は速く、性能劣化がほとんどないという利点を持つ。Dockerfileと呼ばれる設定ファイルからコンテナイメージファイルを作成可能という特性を持つ。一方で、コンテナOSとしてはホストOSと同じLinuxカーネルしか動作しない。wiki
初心者向けの解説じゃなかったので意訳すると、
本番環境でも使えるツールだよ。
Dockerの利点は今までの開発環境はLinux全体を完全に仮想化してたけど、
Dockerなら必要なものだけ用意することが出来るよ。
だから容量も少なくて済むし、軽い、そして仮想環境なのに性能が落ちないんだ。
必要なものはDockerファイルに書いてくれたらDockerでイメージ取ってくるので後は処理するよ。って感じ
PCの中にもう一つPCがあるイメージ!
意訳しすぎな気もするので、詳しいことが知りたい人は下のリンクからどうぞ。
The Docker platform leverages Docker containers to enable IT operations teams and Developement teams to build, ship and run any application, anywhere.
https://www.docker.com/what-docker
ほかにも利点がいっぱいあるのですが、個人的にはまだ使ったことないので一緒に開発してくれる方がいらっしゃったら一緒にしてみたいなって思います。
DockerインストールするのはGUIでサクッとできるので割愛。
Laradock
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
// LaradockをGithubからClone git clone https://github.com/Laradock/laradock.git // laradockディレクトリに移動 cd laradock // env-exampleを.envとしてコピペ cp env-example .env // .envの編集 // プロジェクト構成 // + laradock // + project // となる場合 // .env // APPLICATION=../project/ と設定します。 // PHPのVersion変更 70 56等選べる // PHP_VERSION=71 // DATA_SAVE_PATH=~/.laradock/data デフォルト // プロジェクト毎に管理されたい場合は // DATA_SAVE_PATH=./.laradock/data // MYSQL_VERSION=5.7 デフォルト8.0 // MYSQL_DATABASE=laradock // MYSQL_USER=laradock // MYSQL_PASSWORD=secret // laradock/nginx/sitesで開発ドメイン設定 cd nginx/sites cp laravel.conf.example project-name.conf vim project-name.conf server_name laravel.dev; # -> project-name.dev; root /var/www/laravel/public; # -> /var/www/project-name/public |
使ってみる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
docker-compose up -d nginx mysql Starting laradock_applications_1 ... Starting laradock_mysql_1 ... Starting laradock_applications_1 Starting laradock_applications_1 ... done Starting laradock_workspace_1 ... Starting laradock_workspace_1 ... done Starting laradock_php-fpm_1 ... Starting laradock_php-fpm_1 ... done Starting laradock_nginx_1 ... Starting laradock_nginx_1 ... done docker-compose ps (git)-[master] Name Command State Ports ----------------------------------------------------------------------------------------------------------- laradock_applications_1 /true Exit 0 laradock_mysql_1 docker-entrypoint.sh mysqld Up 0.0.0.0:3306->3306/tcp laradock_nginx_1 nginx Up 0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp |
こんな感じになったら大丈夫!
Laravel インストール
docker-compose psでupになっているのを確認できたらワークスペースでLaravelインストールします。
1 2 3 4 5 |
// sshみたいなもので仮想環境内で操作できるようになるコマンド docker-compose exec workspace bash // Laravelインストール composer create-project --prefer-dist laravel/laravel project-name |
10分ぐらいかかるので気長に待ちましょう。
またcomposerコマンド使う場合WARNING出ますが気にしなくていいです。
http://project-name.devでLaravelと出たら完了です。
Migrate
せっかくなのでMySQLの話もします。
個人的に結構ハマったポイントです><
MySQLをGUIで操作できるSequel Proを使ってみます。
project-name下の.env編集
1 2 3 4 5 6 7 |
//.env DB_CONNECTION=mysql DB_HOST=mysql DB_PORT=3306 DB_DATABASE=laradock DB_USERNAME=laradock DB_PASSWORD=secret |
Docker内のコマンドライン
1 2 3 4 5 6 7 8 |
// project-nameに移動 cd project-name // auth機能追加 php artisan make:auth // マイグレーション php artisan migrate |
Sequel Pro
名前:適当(Docker MySQLとか
ホスト:127.0.0.1
ユーザ名:laradock
パスワード:secret
これで接続できます。
エラー
実際に私が経験したエラーを紹介しときます。
MySQLが立ち上がらない
MySQL 8.0から5.7に変更した際MySQLが起動しなくなった。
原因->MySQLデータが壊れている。
改善策->.laradock/dataを削除後 php artisan migrate
Nginxが立ち上がらない
原因->NginxでPortがかぶったらエラーになる可能性はあります。
改善策->ネットワークユーティリティ->Portsscan->バッティングしているアプリを終了
改善策->.envでNginx Portを80->8888等に変更
Migrateが上手くいかない
composer dump-autoload する
MySQL設定を見直す。
他あったらまた書きます。
最後
今回はLaradockでLaravelの開発環境を構築する方法を書きました。
日本語の記事あんまり無かったりするので書いて見ましたが、はたしてこれで伝わるのかなってレベルの文章力です。。
伝えたいことは全部のせてありますので、何かの参考にしていただければと思います。
Lara-bell
コメントを残す