LoginSignup
30
18

More than 5 years have passed since last update.

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

Last updated at Posted at 2018-06-02

簡単な概要

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

30
18
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
30
18