使用 Laradock 跑多個 Laravel 專案

by Ben
Laradock

前言

Laradock 是一個用 Docker 打造完成的 PHP 開發環境
就像是在官網所說的

先會用 Docker,至於 Docker 是什麼就晚點再說吧!

所以就讓我們照以下步驟
迅速使用 Docker 開發 Laravel 吧!

實作步驟

環境設置

  1. 裝好 Git
  2. 裝好 Docker

實際安裝

Follow 官網 說明直接操作下去就完成啦!
因為官網說明已經滿完整了
所以以下就是針對我自己遇到的坑做一些小提醒

小提醒

由於我們想使用同一個 Docker 來跑多個 Laravel 專案
以下就以 B) Setup for Multiple Projects: 為例

  1. 資料夾結構
    為了同一個 Docker 跑多個專案
    所以資料夾結構會是

    * laradock
    * project-1
    * project-2

    我的實際結構是

    ~/Sites/laradock
    ~/Sites/Projects/laravel
    ~/Sites/Projects/paymechien
  2. host 設置

    127.0.0.1  project-1.test  // 注意這邊有 `.test` 喔
    127.0.0.1  project-2.test  // 注意這邊有 `.test` 喔
  3. Laradock 下的 .env 設置
    搭配我的實際結構
    所以這邊要寫成
    APP_CODE_PATH_HOST=~/Sites/Projects

  4. PhpMyAdmin 相關
    我的 PhpMyAdmin 不知為何一開始登不進去
    後來發現是版本問題 所以要在 .env 把原來的
    MYSQL_VERSION=latest
    改成
    MYSQL_VERSION=5.7

    順帶一提,DB的帳密就是上述設定的下面幾行
    不要 key 錯囉
    (預設帳號、密碼都是 root)

  • 在專案底下的 .env 檔
    DB_HOST 要改成
    DB_HOST=mysql
    然後 DB_USERNAME 及 DB_PASSWORD 都要

    DB_CONNECTION=mysql
    DB_HOST=mysql
    DB_PORT=3306
    DB_DATABASE=payment
    DB_USERNAME=root
    DB_PASSWORD=root
  • 進入 PhpMyAdmin 的方法
    在 laradock 底下的 .env 裡有定義 PhpMyAdmin 的 port
    預設是 8082
    所以若要進入 PhpMyAdmin 的話
    就是在 domain 後面加上 port 號即可
    eg. http://abc.test:8082

  1. 專案一直出現 500 error 問題
    注意在官網文件裡有說
    要把 root 設對
    file
    以我的 case 為例,就要設成下面這樣:
    [專案1]
    file
    [專案2]
    file

  2. 還是出現 500 error
    如果上述還是不行的話
    那可能就是因為你是用原來就寫好的專案 (我就是這樣 QQ)
    所以沒有把專案的 .env 給commit 上去
    以致 laradock 吃不到 然後就 GG了
    所以解法就是
    在專案資料夾內下
    cp .env.example .env
    然後生成新的 key
    php artisan key:generate
    這樣就完成啦!

ps. 如果出現以下error

PHP Warning: require(/home/matynjr/events/vendor/autoload.php): failed to open stream: No such file or directory in /home/matynjr/events/artisan on line 18
PHP Fatal error: require(): Failed opening required '/home/matynjr/events/vendor/autoload.php' (include_path='.:/usr/share/php') in /home/matynjr/events/artisan on line 18

那就是composer太舊,跑一下
composer update
就好了

最後再 run 一下 docker-compose up -d nginx mysql
看到畫面就ok囉!
file
file

  1. 無法跑 php artisan migrate
    目前發現好像是要進入容器才能運作
    (不知道是不是因為有複數專案的關係)
    所以要進入容器內下指令
    docker-compose exec workspace bash
    然後再下
    root@xxx6:/var/www# php artisan migrate

結語

其實我本來是用 Valet 當做本地的開發環境
但由於 Laradock 真的太潮了
又可以確保開發者大家的開發環境一致
自己使用後又發現一些小坑
所以就來分享一下,希望可以幫助到大家!

參考:

https://medium.com/@yfancc20/laradock-%E8%BC%95%E9%87%8F-laravel-%E7%92%B0%E5%A2%83%E7%9A%84%E5%98%97%E8%A9%A6-%E5%B8%B8%E8%A6%8B%E9%8C%AF%E8%AA%A4-2fc6f0c21433

You may also like

Leave a Comment