Edited at

Laradockが上手く動かなくて困った話

More than 1 year has passed since last update.


簡単な概要

PHPのフレームワークLaravelの開発環境をlaradockを使えば簡単だよーって話を聞いて、実際にやって見たんだけど公式のドキュメントを見ても上手くいかないしメッチャ苦労しました。。

取り敢えずlaradockでlaravelを動かすってところまでを書きました!

ちなみにlaravel 5.6です。

migrationでも苦労したんでそのうち記事書くよー:raised_hand:


準備:japanese_goblin:

今回はdocker for mac とgitを使うよ!

:point_down:このページを参考にしたよ!全部英語で読むの大変(笑)!

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に必要な設定が書かれてる:wink:

なんか難しそうだから分かんなくても大丈夫!

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開いてみると、、、、

localhost.png

動かねっーーーーーーー:angry:

もう激おこモードだわwwww:japanese_goblin:

:rage::rage::rage::rage::rage::rage::rage::rage::rage:

とりあえず、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

スクリーンショット 2018-06-02 17.59.47.png

やったーーーー!nginx動いたぜー!!

あとはLaradockのプロジェクトを作るだけ!!

お疲れモード突入だけど頑張ろう!:sunny:ゴールまであともうちょっと!:fire::fire::fire:

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

:point_up:でコンテナに入る!

今回はtestAppって名前だけど好きなように勝手に変えてね:kissing_heart::ok_hand:

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

ブラウザを再読み込みしたらできたぜ!!!:sunglasses:

もしダメだったらこれを試して!

docker-compose restart

:point_up:kawamura_kenjiさんにコメント頂きました!あざます!!

スクリーンショット 2018-06-02 18.27.56.png

できない人はdocker-compose stopした後にdocker-compose up -d nginxを実行して見てー!

多分できると思う!(笑)


まとめ

最初の環境構築で躓いちゃうと萎えるよね。。。。

でもがんばろう!きっとよくなる!

僕はこれをやるのに休日丸1日使っちゃたよ(笑):confounded:

分かんなかったらコメントとかから聴いてください:kissing_smiling_eyes:答えるかも(笑:stuck_out_tongue_winking_eye:

以上、終わり!

バイバーイ:raised_hand::sunny:


参考にしたページ

参考にさせてもらったページです!

ありがとうございました!:relaxed:

https://qiita.com/kiida510/items/cc31453f8034ceb73487

https://qiita.com/akokubu/items/c79bb7128d7b16a20a22