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


#簡単な概要
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](https://qiita-image-store.s3.amazonaws.com/0/243614/b3b4dce1-551a-60b8-a206-954388b59a11.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！
今回は８００１番ポートを使います！

```
### 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
```

<img width="1277" alt="スクリーンショット 2018-06-02 17.59.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/243614/c4c15efc-382c-4e50-61a8-7fcb5d20e0ae.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](https://qiita.com/kawamura_kenji)さんにコメント頂きました！あざます！！


<img width="1267" alt="スクリーンショット 2018-06-02 18.27.56.png" src="https://qiita-image-store.s3.amazonaws.com/0/243614/a4948f41-f428-3705-7859-c1be87f09448.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