LaraDockでLaravel-5-boilerplateを使う
はじめに
Laravel使った開発にLaradockを使うというのはどうだろう - Qiita
http://qiita.com/niisan-tokyo/items/d4485b8bb4fbfcfcc6be
という記事を読みまして、こんな便利なものがあるのか!と衝撃を受け早速使ってみたものです。
筆者はWindows10のGit Bash上で作業を行っています。
環境によってこの通りにはならない場合もありますので、あらかじめご了承ください。
docker、docker-machine、docker-composeのインストール、設定
インストールは子細省略。各OSでやり方があるので公式に従ってください。
https://docs.docker.com/compose/install/
インストールが終わったら、docker-composeの起動にはdocker-machineの起動が必要なのでその設定も済ませます。
docker-machine start
eval $(docker-machine env)
docker-machineで使用するコンテナを指定せずにコマンドを打つと、defaultという名前のコンテナが自動で選択されるので、docker-machine start default
と打ったのと同等となります。
docker-composeからはこのdefaultが起動元として使用されるようなので、覚えておいて損はないかと。
(docker-machine start default
で起動したdefaultコンテナ内で docker-compose up
で起動したdockerコンテナが動作している)
docker-machineのファイル共有設定
Windowsで、C:\Users以外で作業をしている場合は、ここでファイル共有の設定をしておくと後で楽です。
その他のOSの場合、C:\Usersをそのまま使う方はこの項はすっ飛ばしてOK。
例えば筆者の場合はDドライブを作業場所にしているので、ここを丸ごとマウントしてしまいたいので、まずはVirtualbox(またはVMware)に作成されているdefaultコンテナのファイル共有設定でD:\を/dでアクセスできるように紐付けします。
そしてdefaultコンテナにマウントの設定をします。
対象のファイルは /var/lib/boot2docker/profile です。
docker-machine ssh
でログインして 下記コマンドでファイルを開かずとも追記が可能です。
echo 'sudo mkdir -p /d' |sudo tee -a /var/lib/boot2docker/profile
echo 'sudo mount -t vboxsf -o uid=0,gid=0 d /d' |sudo tee -a /var/lib/boot2docker/profile
ログアウト後、docker-machine restart
で再起動ののち再ログインし、ls -la /d
でDドライブの内容が読めることを確認したらOKです。
(VMwareはvboxsfでは設定できない気がするので違うコマンドが必要かもしれませんそこまでは調べていませんすみません!)
LaraDockのダウンロード、設置
mkdir laradock
cd laradock
git clone https://github.com/LaraDock/laradock
cd laradock
または.gitが不要な場合は、
mkdir laradock
cd laradock
curl -L -o laradock.tar.gz https://github.com/LaraDock/laradock/archive/master.tar.gz
tar zxvf laradock.tar.gz
mv laradock/laradock-master laradock/laradock
rm laradock.tar.gz
cd laradock
一つディレクトリを掘っておくのがポイントです。
LaraDockを起動
そしておもむろにdocker-compose起動。
cd laradock
docker-compose up -d nginx mysql
nginx、mysqlと関連付けられているdockerコンテナがいくつも起動しますが、すべてDockerfileからイメージが生成されてコンテナが起動されるので、初回起動時はしばらく時間がかかります。
コーヒーやお茶菓子などで一服するか、ちゃちゃっと片付けられる他のお仕事しましょう。
起動が終わったら、実作業用としてworkspaceが用意されているのでそこにログイン。
docker exec -ti laradock_workspace_1 bash
ちなみにこのlaradock_workspace_1というコンテナ名は、先頭のlaradockの部分がディレクトリ名から取られているようなので、ディレクトリ名がlaradockでない場合はその名前になっています。
docker-compose.ymlを見ると一目瞭然ですが、nginxもphp-fpmもworkspaceもapplicationのボリュームを参照しています。
workspaceの/var/www/laravel内のファイル更新はnginxにもphp-fpmにも反映されるので便利。
tty modeがどうたらでログインできない場合は、docker-machineにsshログインして、そっちからログイン。
docker-machine ssh
docker exec -ti laradock_workspace_1 bash
laravel-5-boilerplateのインストール、前準備
ログイン出来たら、workspaceにはcomposerもnpmも既に入っているので、開発環境の構築は不要です。素敵!超便利!
ログイン直後で既に/var/www/laravelディレクトリにいるので、
そのままlaravel-5-boilerplateをダウンロード。
git clone https://github.com/rappasoft/laravel-5-boilerplate
または.gitディレクトリが不要な場合は、
curl -L -o l5b.tar.gz https://github.com/rappasoft/laravel-5-boilerplate/archive/master.tar.gz
tar zxvf l5b.tar.gz
mv laravel-5-boilerplate-master laravel-5-boilerplate
rm l5b.tar.gz
ここで最初にディレクトリを一つ掘っておいたのが活きてきます。
nginxの設定が、ドメイン直下がdocument root直下にくるようになっており、document rootの下層ディレクトリに展開したのでパスがズレています。
いったんログアウトして、docker-compose.ymlの設定を変更。
application:
build: ./application
volumes:
- ../laravel-5-boilerplate:/var/www/laravel
設定を適用させるため、docker-composeを再起動。
docker-compose restart
再度workspaceにログインしなおし、laravel-5-boilerplateセットアップの続き。
docker exec -ti laradock_workspace_1 bash
ログイン後のパスは/var/www/laravelで同じですが、ls -la
で見てみると、先ほどDLしたlaravel-5-boilerpateのファイル達がdocument rootにきています。
ホストOS側でも、laradock/laradockと並んでlaradock/laravel-5-boilerplateが出来ているのが確認できると思います。
laravel-5-boilerplateのセットアップ
ここからは通常のlaravel-5-boilerplateのセットアップフローに沿っていけばOK。
compose install
npm instlal
Windowsで作業を行っていて、npm installでsymlinksエラーが出た場合は、
npm install --no-bin-links
でsymlinksは不使用であることを明示するとうまくいく。
次に.envの内容を編集。
cp .env.example .env
して、ホストOSで.envを変更します。
dockerネットワークはIPアドレスが自動割り振りなので、MySQLサーバにはIPアドレスは書かず、dockerイメージ名を書けば繋がります。(laradock_mysql_1 など)
DBユーザーやパスワードはdocker-compose.ymlにあるものが使えます。
APP_KEYをオリジナルのものに変更するのをお忘れなく!
.envを書き換え終わったら、
php artisan key:generate
php artisan migrate
database/seeds/Access/UserTableSeeder.phpにユーザーテーブルの初期設定定義があるので、
AdminとDefault Userをお好みで編集。このままで良ければ触らず次へ行って大丈夫です。
php artisan db:seed
で一通り完了。
ホストOSから http://192.168.99.100 にアクセスすれば、laravel-5-boilerplateが稼働しているのが確認できます。と思います。
お疲れ様でした!
参考文献
Laravel使った開発にLaradockを使うというのはどうだろう - Qiita
http://qiita.com/niisan-tokyo/items/d4485b8bb4fbfcfcc6be
Docker MachineでDドライブなどUsers以外を自動マウントする - Qiita
http://qiita.com/Bakudankun/items/d612865440565b10523f
Dockerにホストのフォルダをマウントしたい! - Qiita
http://qiita.com/dojineko/items/f623894ef2436bef890e
npm install でエラーが出たときの対応 - 蒼の王座・裏口
http://sqlazure.jp/r/%E6%9C%AA%E5%88%86%E9%A1%9E/755/
どれも大変分かりやすく非常に参考になりました。ありがとうございます!
追記
ホストOSがWindowsだからの可能性がありますが、何度もgulpすると2回目以降などでtext file is busy.
でgulpが失敗するケースが出るようになりました。graceful-fsのバージョンが低いという警告がずっと出ていたのでこれを修正したら直りました。
修正前
80行目
# Install stable node
RUN . ~/.nvm/nvm.sh \
&& nvm install stable \
&& nvm use stable \
&& nvm alias stable \
&& npm install -g gulp bower
修正後
80行目
# Install stable node
RUN . ~/.nvm/nvm.sh \
&& nvm install stable \
&& nvm use stable \
&& nvm alias stable \
&& npm install -g graceful-fs \
&& npm install -g gulp \
&& npm install -g bower
npm install -g graceful-fs gulp bower
と一コマンドに併記するのと、npm内部でどう変わるのかがイマイチ不明ですがその書き方だとダメで、npm install -g xxx
の行を分割したうえでgraceful-fsを入れるようにすると失敗しなくなりました。
dockerコンテナが起動中の場合は一旦落として、dockerイメージをビルドし直し、再起動すると適用されます。
docker-compose down
docker-compose build workspace
docker-compose up -d nginx mysql
Author And Source
この問題について(LaraDockでLaravel-5-boilerplateを使う), 我々は、より多くの情報をここで見つけました https://qiita.com/mkgask/items/30c716672801b7d79a38著者帰属:元の著者の情報は、元の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 .