/**ぶろぐ*/

コメントアウトしたくなるブログ

docker for windowsを使ってlaravelの開発環境を作る

about

インターンでlaravelを使った案件があって,とりあえず勉強にと自宅のwindowsに開発環境を作ることにした. しかしwindowsでのphpの開発環境構築は面倒くさい印象を持っていたので,dockerとlaradockでサクッと作る.

構築する環境

  • windows10 pro

dockerをいれる

windows用のdockerが,docker for windowsという名で公式から出ている.

docs.docker.com

これはhyper-vを利用しているので,windows10 homeは使用できない.その場合はVirtualBoxを使用するdocker Toolboxを使用してみるといいかも.

www.docker.com 今回はdocker for windowsを使用する.

手順

  1. インストーラーをダウンロード・実行する.
  2. インストール完了後ログアウトされるのでログインする.(hyper-vを無効化していた場合は再起動になるかもしれない)
  3. dockerの設定からshard drivesにCドライブをあてる.(どのドライブをあてるかはお好みで) f:id:matsuneko22:20170908003648j:plain

ネットワークの設定はインストーラがやってくれるので必要ない.

laradockの導入

laradockはlarabelの開発環境をdocker上に作成するためのツールである.

github.com これを使うとDBやwebサーバのコンテナを簡単にそろえることができる.

手順

プロジェクトのフォルダの作成

  1. shard drives内の任意の場所にプロジェクトのフォルダを作成する.
  2. そのフォルダ内にlaradockをダウンロードする. ディレクトリ構造はこんな感じになる.
project
|
|_laradock

laradockの設定ファイルの編集

laradockのフォルダ内にenv-exampleがあるので,それを.envとしてコピーする. .envでは使用するコンテナの設定パラメータがあり,書き換えることでコンテナを制御することができる. 今回はNginx,postgres,redisのコンテナを利用する*1. 編集箇所は以下の通り.

1.ホストIPの設定

windowsIPアドレスに書き換える

// DOCKER_HOST_IP=10.0.75.1
DOCKER_HOST_IP=169.254.80.80

2.xdebugのインストール設定

WORKSPACE_INSTALL_XDEBUG=true
PHP_FPM_INSTALL_XDEBUG=true

3.Nginxのポート設定

windowsがすでに使用しているポートと被らないように変更.

// NGINX_HOST_HTTP_PORT=80
NGINX_HOST_HTTP_PORT=8080

コンテナの起動

コンテナの起動は一つのコマンドでできる.

  1. powershellを起動し,laradockのフォルダまで移動.
  2. docker up -d nginx postgres redisを実行*2

完了すると起動しているコンテナの一覧はこうなる.

PS C:\略\project\laradock> docker-compose ps
         Name                        Command               State                      Ports
-------------------------------------------------------------------------------------------
laradock_applications_1   /true                            Exit 0
laradock_nginx_1          nginx                            Up       0.0.0.0:443->443/tcp, 0
laradock_php-fpm_1        docker-php-entrypoint php-fpm    Up       9000/tcp
laradock_postgres_1       docker-entrypoint.sh postgres    Exit 1
laradock_redis_1          docker-entrypoint.sh redis ...   Up       0.0.0.0:6379->6379/tcp
laradock_workspace_1      /sbin/my_init                    Up       0.0.0.0:2222->22/tcp

laravelのプロジェクトの作成

コンテナを作成したあと,コンテナ内に入りlaravelのプロジェクトを作成する. 前項に引き続きlaradockのディレクトリ内でdocker-compose exec workspace bashを実行. 無事には入れたら,composerを使って作成.

PS C:\略\project\laradock> docker-compose exec workspace bash
root@d9443b2831a8:/var/www# composer create-project --prefer-dist laravel/laravel my_app

作成したらexitでコンテナから抜ける. 次に.envファイルのAPPLICATIONのパスを設定.

// APPLICATION=../
APPLICATION=../my_app/

そしたら docker up -d nginx postgres redisをもう一回実行*3. 完了したらhttp://localhost:8080にアクセス. こんな画面が出てきたら成功. f:id:matsuneko22:20170908015438j:plain プロジェクトフォルダの最終的な構造はこんな感じ.

project
|
|_ laradock
|
|_ my_app

ホストのwindowsの方にもmy_appのフォルダが作成されており,これを編集すると逐次コンテナのほうに反映されるらしい.

おわりに

laradock入れてlaravelのプロジェクトを作成するのはそんなに難しくはなかったけど,xdebugの設定だけがよくわからなかった. xdebugを使いたい場合は以下の記事を参考にするといいかも.

qiita.com

rosの記事はいつかまた書きます. おわり

参考

Frequently asked questions (FAQ) | Docker Documentation

Laravel開発環境をLaradockで構築する | Tips Note by TAM

Laradock

*1:ほかにもapache2やmysqlもつかえるらしいので公式見てほしい

*2:コンテナのbuildと起動を同時にやってくれる

*3:またか・・・