LaraDockを使って10分でLaravel+Nginx+MySql+Redisのローカル環境を構築してみる。
はじめに
こちらは TECOTEC Advent Calendar 2019 の13日目の記事です。
折り返しとなります。
Qiitaの記事や他所のブログでも散々書かれていることかと思いますが、復習がてらLaraDockを使ってLaravelのローカル環境を構築してみようと思います。
目指せ10分でローカル環境構築!
※当方macで作業しているため、macでの手順になります。Windowsの方は適時Windows版に読み換えてお試しください。
やること
- Dockerのインストール
- LaraDockのインストール
- Laravelプロジェクトの作成
- LaraDockの設定変更
- Laravelの設定変更
以上となります。
ではさっそくやってみましょう。
実演
Dockerのインストール
以下のサイトよりDocker for Macをダウンロードします。
ダウンロードにはdocker hubへの登録が必要なので案内に従って登録してください。
Docker.dmg
をダウンロードできたら起動してインストールします。
インストール後はdocker.app
を起動しておいてください。
LaraDockのインストール
GitHubからLaraDockのファイルを取得します。
ターミナルを起動して作業ディレクトリへ移動してください。
$ cd ~/work
cloneします。
$ git clone https://github.com/LaraDock/laradock.git
取得できました。laradock
ディレクトリが作成されています。
ワークスペースのコンテナを起動するために.env
ファイルを作ります。
$ cd laradock
$ cp env-example .env
Laravelプロジェクトの作成
※開発が進んでいる場合はこの作業はスキップしてください。
※チーム等で管理しているGitからソースを取得してください。
ワークスペースのコンテナを起動してログインします。
$ pwd
~/work/laradock
$ docker-compose up -d workspace
~~~省略
Creating laradock_workspace_1 ... done
$ docker-compose exec --user=laradock workspace bash
laradock@0c7610d35e08:/var/www$
ログイン完了です。
Laravelプロジェクトを作成します。
$ composer create-project laravel/laravel server
server
プロジェクトが作成されました。
LaraDockの設定変更
ワークスペースからログアウトします。
$ exit
vim
で.env
ファイルを開きます。(エディタならなんでもいいです)
$ pwd
~/work/laradock
$ vim .env
プロジェクトのパスを変更します。
元の記述をコメントアウトして追記するか、直接編集してください。
# APP_CODE_PATH_HOST=../
APP_CODE_PATH_HOST=../server/
MySqlのデータを永続化させないために作業ディレクトリへ変更します。
※プロジェクトごとにデータを管理する想定です。共通で問題ない場合はこの作業はスキップしてください。。
# DATA_PATH_HOST=~/.laradock/data
DATA_PATH_HOST=.laradock/data/
ポートを変更します。
※こちらは任意です。必要なければこの作業はスキップしてください。
# NGINX_HOST_HTTP_PORT=80
NGINX_HOST_HTTP_PORT=8880
MySqlのバージョンと接続情報を変更します。
最新の8.xは色々あれなので5.7を指定します。
※最新で問題ない場合はこの作業はスキップしてください。
# MYSQL_VERSION=latest
# MYSQL_DATABASE=default
# MYSQL_USER=default
MYSQL_VERSION=5.7
MYSQL_DATABASE=laradock
MYSQL_USER=laradock
MySqlとRedisのホスト名を設定しておきます。
ファイル内の一番下に追記してください。
DB_HOST=mysql
REDIS_HOST=redis
設定を反映させるためコンテナを再起動します。
一緒にNginx・MySql・Redisを起動します。
$ pwd
~/work/laradock
$ docker-compose stop
$ docker-compose up -d workspace nginx mysql redis
Laravelの設定変更
ワークスペースのコンテナにログインして作業します。
$ pwd
~/work/laradock
$ docker-compose exec --user=laradock workspace bash
laradock@0c7610d35e08:/var/www$
.env
を編集します。
$ vim .env
DBとRedis接続設定を書き換えます。
DB_HOST=mysql
DB_DATABASE=laradock
DB_USERNAME=laradock
DB_PASSWORD=secret
~~
REDIS_HOST=redis
パーミッションを変更します。
$ chmod -R a+w storage
$ chmod -R a+w bootstrap/cache
依存ライブラリをインストールします。
$ composer install
接続確認!
http://localhost:8880/ にアクセスします。
Laravelのトップページが表示されれば完了です。
非常に簡単にLaravelの環境が構築できました。
ホストやDBの情報などは適時自分の使いやすいように変更してください。
NginxやMySqlの細かい設定はまた別の機会にかければ書きたいと思いいます。
というかそのままでローカルで使う分には全く問題ないのであまりいじったことがないです。
おまけ
Laravelには便利な機能が沢山あります。
認証機能の実装
以下のコマンドを実行するだけで登録・ログイン・パスワードリセットなどが使用できるようになります。
$ php artisan make:auth
$ composer require laravel/ui
$ php artisan ui vue --auth
Laravelのバージョンで若干コマンドが異なるので注意が必要です。
表示を整えるためにnpm installとnpmを実行してcssとjsをコンパイルします。
$ npm install && npm run dev
マイグレーションを実行します。
$ php artisan migrate
管理画面の実装
ついでに管理画面も作ってみます。
$ composer require encore/laravel-admin
以下のコマンドを実行します。
$ php artisan vendor:publish --provider="Encore\Admin\AdminServiceProvider"
$ php artisan admin:install
http://localhost:8880/admin/ にアクセスします。
初期のIDパスワードは、ID:admin
パスワード:admin
となっています。
そのままで使えることは少ないですが、上記で認証機能と管理画面が作れてしまいます。
起動シェルを作ってみる
PC起動後など起動コマンドが長かったりするのでシェルを作っておくと捗ります。
起動
#!/bin/bash
cd ./laradock; docker-compose up -d workspace nginx mysql redis
ワークスペースへログイン
#!/bin/bash
cd ./laradock; docker-compose exec --user=laradock workspace bash
停止
#!/bin/bash
cd ./laradock; docker-compose down
まとめ
LaraDockはローカル環境構築が非常に簡単です。
PHPでのメインフレームワークはしばらくLaravelが多くなりそうなので、LaraDockは扱えるようにしておくと色々便利そうです。
簡単なwebページ作るならあっという間です。
今後も色々試して使いこなしていきたいと思います。
よいエンジニアライフを!
Author And Source
この問題について(LaraDockを使って10分でLaravel+Nginx+MySql+Redisのローカル環境を構築してみる。), 我々は、より多くの情報をここで見つけました https://qiita.com/teco_saku/items/ddb45cfa4bbd7b3fb21d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .