#簡単な概要
PHPのフレームワークLaravelの開発環境をlaradockを使えば簡単だよーって話を聞いて、実際にやって見たんだけど公式のドキュメントを見ても上手くいかないしメッチャ苦労しました。。
取り敢えずlaradockでlaravelを動かすってところまでを書きました!
ちなみにlaravel 5.6です。
migrationでも苦労したんでそのうち記事書くよー
#準備
今回はdocker for mac とgitを使うよ!
このページを参考にしたよ!全部英語で読むの大変(笑)!
http://laradock.io/
#参考のやつを見ながらやってみる!
まずLaradockのプロジェクトフォルダを作ります!
ファインダーでもいいけど今回はターミナルでやります!
mkdir laravelwork
cd laravelwork
場所とか名前は自由でにしておk!
必要なファイルをgitからダウンロード
git clone https://github.com/Laradock/laradock.git
.envにenv-sampleの内容をコピー!
.envはあとで使うdocker-compose.ymlに必要な設定が書かれてる
なんか難しそうだから分かんなくても大丈夫!
cp env-example .env
コンテナを実行!最初は結構時間かかるよー
docker-compose up -d nginx mysql phpmyadmin redis workspace
今度はデータベースの設定!
.envを開いて下の設定を追加!
DB_HOST=mysql
REDIS_HOST=redis
QUEUE_HOST=beanstalkd
That's it! enjoy :)
公式の説明はこれで終わり!
ブラウザでhttp://localhost
開いてみると、、、、
動かねっーーーーーーー
もう激おこモードだわwwww
とりあえず、docker-compose stop
#落ち着いて解決方法を調べた、、、、
まずmacに初めから入っているapacheが今回使うnginxのポートと被っちゃてるのでポートを変更しなきゃらしい!
docker-compose.yml
編集するよ!使える人はvimとかで!ファイルエディターでもおk!
今回は8001番ポートを使います!
### NGINX Server #########################################
nginx:
build:
context: ./nginx
args:
- PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
- PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
volumes:
- ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
- ${NGINX_HOST_LOG_PATH}:/var/log/nginx
- ${NGINX_SITES_PATH}:/etc/nginx/sites-available
ports:
## 変更前
#- "${NGINX_HOST_HTTP_PORT}:80"
## 変更後
- "8001:80"
## 変更前
#- "${NGINX_HOST_HTTPS_PORT}:443"
## 変更後
- "443:443"
depends_on:
- php-fpm
networks:
- frontend
- backend
そうするとこんな感じになった!
171 ### NGINX Server #########################################
172 nginx:
173 build:
174 context: ./nginx
175 args:
176 - PHP_UPSTREAM_CONTAINER=${NGINX_PHP_UPSTREAM_CONTAINER}
177 - PHP_UPSTREAM_PORT=${NGINX_PHP_UPSTREAM_PORT}
178 volumes:
179 - ${APP_CODE_PATH_HOST}:${APP_CODE_PATH_CONTAINER}
180 - ${NGINX_HOST_LOG_PATH}:/var/log/nginx
181 - ${NGINX_SITES_PATH}:/etc/nginx/sites-available
182 ports:
183 - "8001:80"
184 - "443:443"
185 depends_on:
186 - php-fpm
187 networks:
188 - frontend
189 - backend
190
よし!確認じゃー!
docker-compose up -d nginx
やったーーーー!nginx動いたぜー!!
あとはLaradockのプロジェクトを作るだけ!!
お疲れモード突入だけど頑張ろう!ゴールまであともうちょっと!
Laravelのプロジェクトを作るためにdockerのworkspaceコンテナに入ります!
docker-compose ps
で立ち上がっているコンテナの名前を調べて、、、、
Name Command State Ports
---------------------------------------------------------------------------------------------------------
laradock_nginx_1 nginx Up 0.0.0.0:443->443/tcp, 0.0.0.0:8001->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
docker exec -it laradock_workspace_1 /bin/bash
でコンテナに入る!
今回はtestAppって名前だけど好きなように勝手に変えてね
composer create-project laravel/laravel testApp
を実行して、新しいLaravelのプロジェクトを作ってみるけど
Do not run Composer as root/super user! See https://getcomposer.org/root for details
エラーーーーー!!クッソ最後の最後で裏切られたーーーーーーー
と思ったけど待ってるとちゃんと動いた(笑)!じっと我慢!
最後に.envのローカルファイルとdockerのコンテナのディレクトリが紐づいてるとこの設定をしてあげます!
# Point to the path of your applications code on your host
APP_CODE_PATH_HOST=../testApp/
#ちなみに変更前
#APP_CODE_PATH_HOST=../
# Point to where the `APP_CODE_PATH_HOST` should be in the container. You may add flags to the path `:cached`, `:delegated`. When using Docker Sync add `:nocopy`
APP_CODE_PATH_CONTAINER=/var/www:cached
ブラウザを再読み込みしたらできたぜ!!!
もしダメだったらこれを試して!
docker-compose restart
kawamura_kenjiさんにコメント頂きました!あざます!!
できない人はdocker-compose stop
した後にdocker-compose up -d nginx
を実行して見てー!
多分できると思う!(笑)
#まとめ
最初の環境構築で躓いちゃうと萎えるよね。。。。
でもがんばろう!きっとよくなる!
僕はこれをやるのに休日丸1日使っちゃたよ(笑)
分かんなかったらコメントとかから聴いてください答えるかも(笑)
以上、終わり!
バイバーイ
#参考にしたページ
参考にさせてもらったページです!
ありがとうございました!
https://qiita.com/kiida510/items/cc31453f8034ceb73487
https://qiita.com/akokubu/items/c79bb7128d7b16a20a22