docker for windowsを使ってlaravelの開発環境を作る
about
インターンでlaravelを使った案件があって,とりあえず勉強にと自宅のwindowsに開発環境を作ることにした. しかしwindowsでのphpの開発環境構築は面倒くさい印象を持っていたので,dockerとlaradockでサクッと作る.
構築する環境
- windows10 pro
dockerをいれる
windows用のdockerが,docker for windowsという名で公式から出ている.
これはhyper-vを利用しているので,windows10 homeは使用できない.その場合はVirtualBoxを使用するdocker Toolboxを使用してみるといいかも.
www.docker.com 今回はdocker for windowsを使用する.
手順
- インストーラーをダウンロード・実行する.
- インストール完了後ログアウトされるのでログインする.(hyper-vを無効化していた場合は再起動になるかもしれない)
- dockerの設定から
shard drives
にCドライブをあてる.(どのドライブをあてるかはお好みで)
ネットワークの設定はインストーラがやってくれるので必要ない.
laradockの導入
laradockはlarabelの開発環境をdocker上に作成するためのツールである.
github.com これを使うとDBやwebサーバのコンテナを簡単にそろえることができる.
手順
プロジェクトのフォルダの作成
shard drives
内の任意の場所にプロジェクトのフォルダを作成する.- そのフォルダ内にlaradockをダウンロードする. ディレクトリ構造はこんな感じになる.
project | |_laradock
laradockの設定ファイルの編集
laradockのフォルダ内にenv-exampleがあるので,それを.envとしてコピーする. .envでは使用するコンテナの設定パラメータがあり,書き換えることでコンテナを制御することができる. 今回はNginx,postgres,redisのコンテナを利用する*1. 編集箇所は以下の通り.
1.ホストIPの設定
// 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
コンテナの起動
コンテナの起動は一つのコマンドでできる.
- powershellを起動し,laradockのフォルダまで移動.
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にアクセス.
こんな画面が出てきたら成功.
プロジェクトフォルダの最終的な構造はこんな感じ.
project | |_ laradock | |_ my_app
ホストのwindowsの方にもmy_appのフォルダが作成されており,これを編集すると逐次コンテナのほうに反映されるらしい.
おわりに
laradock入れてlaravelのプロジェクトを作成するのはそんなに難しくはなかったけど,xdebugの設定だけがよくわからなかった. xdebugを使いたい場合は以下の記事を参考にするといいかも.
rosの記事はいつかまた書きます. おわり
参考
Frequently asked questions (FAQ) | Docker Documentation