by Devin Yang

建立於: 6年前 ( 更新: 1年前 )

建議採用進化版Docker環境,deviny/phpenv。

https://www.ccc.tc/article/deviny-phpenv-summary

分隔線下是舊資料囉。



前言:

對我來說,Laravel是一個進化極快速的PHP框架,也是一個全方位解決方案的框架。
例如,本站使用的是Facebook登入的功能,即是透過Laravel的官方套件socialite實做的,
很多東西框架可以幫我們搞定了,像是queues、file storage,驗證機制等,框架通通提供給我們,幹麻自己做呢?
透過Laravel的框架提供的多種的功能,可替我們搞定很多的事情。

以下列出Laravel歷代版本的PHP最低環境需求: (註: 最新版MacOS預設已不安裝php了)

Laravel版本PHP要求
Laravel 4.2PHP>=5.4
Laravel 5.0PHP>=5.4, PHP<7
Laravel 5.1PHP>=5.5.9
Laravel 5.2PHP>=5.5.9
Laravel 5.3PHP>=5.6.4
Laravel 5.4PHP>=5.6.4
Laravel 5.5PHP>=7.0


由於Laravel的進化速度真的很快,系統需求也是一代比一代高,所以當然官方也提供諸如Homestead及Valte等開發執行環境給我們使用。

先說好,我不是黑特(hater),即然本文提到了要用Docker建立Laravel開發環境,
我當然對Homestead及Valte有點小小的個人意見囉:

就我個人而言,Homestead採用的Vagrant真的是有點過時的東西了,其實Vagrant的概念非常好,
至少我也曾經使用他在自己專案上,但是用了Docker後,
可以用一種辭來形容我對這個情境的看法,就是「即生瑜何生亮」,雖然Vagrant跟Docker當然還是有其區別,
本文就不進行探討了,但就開發環境上的使用,
Docker光是秒級啟動速度及他的微服務架構就贏了呀。

再來談談Valte好了,Valate需要運作在Mac上,並且使用homebrew進行安裝一些Mac OS沒有提供的東西,像是新版PHP等。
執行速度當然也是超快,但是靈活度不足。
安裝完後,就吃了我的port 80,我要跑的東西又不是只有Laravel,而我可能需要換較低版本的PHP運作,典解,
用Valte還是要用brew安裝一些東西,資料庫調整或php版本變更或是自行擴允PHP的外掛呢?對我來說似乎沒有那的麼靈活。
相對來說,Docker我們可以選擇別人幫我們建好的image,必要時,我們也可以自己進行擴充建立自己需要的image環境,僅需自己去調整Dockerfile的設定檔即可,非常自由呀:p。


所以使用Docker來進行Laravel的開發環境建立及執行,似乎就解決了,我的啟動速度及靈活度的問題了。

關於D-Laravel

目前其實已有相當多的 docker + laravel 開發環境存在了,為什麼我還是要搞一個,是吃飽太閒嗎?
如果您是對Docker略為熟悉的使用者,都應該知道,Dockerhub上需標示為official才是官方的版本,

相對的代表了他是較安全的,我不用去檢視裡面是否埋了什麼不該有的東西。

而D-Larave,就是完全採用了官方的image official為基礎建立的,
PHP image也是以Docker的php官方image進行重建(因為需符合Laravel環境),
所以使用上可以較放心。

如果您對於如何重Build D-Laravel的PHP有興趣,可以參考下方影片。

 

當然D-Laravel不只是提供了docker-compose的設定檔,更提供了簡化版的bash命令,
對於Laravel或是Docker的初學者,都可以非常快速的創建Laravel的開發環境,
而且不止於Laravel開環境,不論您是否懂docker,都可以立即使用,平時的使用上也相當的方便。
 

如何下載及使用D-Laravel呢?

但是D-Laravel主要運作及測試的環境是以Mac OS為主。
Linux上執行應該是沒有問題的,如果您使用Linux執行有問題,可以開PR給我,謝謝。
如果您是Windows 10需確認您在gitbash下的環境,已安裝了可正常運作的laravel installer。

在這裡的可運作指的是D-Laravel提供的簡易bash指令(./console跟./create),
如果您知道如何使用docker-compose,在Windows 10執行是沒有問題,是可跨平台執行的。

一、首先,當然是我們的電腦要先安裝Docker囉 ,希望您裝了。
https://docs.docker.com/docker-for-mac/

二、直接下載D-Laravel的Repo
https://github.com/DevinY/dlaravel

三、啟動,就這麼簡單了,進入下載後解開的dlaravel資料夾,然後輸入指令:

./create test1

以下是完成的畫面:


以上,就搞定囉,夠簡單了吧!!
您打開瀏覽器,輸入網址

http://test1.dev:32770


即可看到Laravel專案的畫面,同時已經自動幫建好test1的資料庫及.env的設定了。

在啟動過程,bash程式需要去調整 /etc/hosts,加入test1.dev的域名,所以會詢問系統密碼,因此這是正常現象不用擔心。

D-Laravel完全Open Source,如果您還是有點害怕,可以自已去檢視看create的bash上的host做了什麼。
在不進行任何設定檔的調整下,D-Laravel的啟動會是隨機埠,如上圖顯示的32770

Laravel的Project會建立在sites/test1的資料夾內。
如果我們要停止,可以使用./console down即可。

create指令,並不單單只是幫我們建立了一個Laravel的Project,同時,也幫我建立了test1的資料庫。

我完全不想使用D-Laravel提供的bash是否有辨法用D-Laravel上的docker-compose建立Laravel的開發環境呢。
這當然是可以的,create跟console的bash只是提供了一個簡化自己手動設定Laravel的步驟
及Docker的docker-compose官方指令。

關於手動建立Laravel Project及啟動docker-compose

以下就來直接說明怎麼手動建立,當然,希望你需知道,
什麼是laravel installerdocker-compose的基本指令。
其實手動建立的步驟也並不難。

一、我們在dlaravel的資料夾下,直接透過laravel installer建立一個laravel的Project到sites的資料夾。
下圖中,我新增了一個test2的project到sites的資料夾內


二、手動修改/etc/hosts檔,請使用您自己習慣的編輯器,需有Root權限。
如果您不懂vi的編輯,請勿執行下方指令哦,我怕你無法退出Vim編輯器,或破壞到hosts檔。

sudo vi /etc/hosts

進入後,在hosts檔的最下方加入, 127.0.0.1 test2.dev
請注意,一定要是要*.dev這個名稱,這是D-Laravel的nginx設定檔預設的名稱。*代表是您的專案資料夾名稱。

127.0.0.1 test2.dev

 
替代方式,當然是用D-Laravel的bash幫您修改。

./create --host test2


三、啟動D-Laravel的docker containers.
-d的意思是要在背景執行containers。

docker-compose up -d


四、至於資料庫的建立及.env的設定,就自己進入sites/test2中進行囉。

我不是很會寫文章,如果您對於文章內容有什麼疑問,歡迎留言給我哦。

關於D-Laravel的詳細說明及使用,請至官方的Repo:
https://github.com/DevinY/dlaravel

 

Tags: docker laravel

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


docker

如何更新或重建D-Laravel的FPM Image

有時,docker的Image會進行一些修正或加入更多的外掛,我們要如何來更新電腦中的image呢? 非常簡單,使用docker pull [使用的image即可],如果想建立自己的image也是可行的...

laravel

Laravel上的jenkins CI Server pipeline基本運用教學

您想透過docker建立持續整合及交付的CI Server給Laravel使用嗎? 在CI Server上執行laravel dusk及phpunit輕鬆搞定自動化測試,及相關記錄。 看完本篇或許您會發現CI/CD有多簡單。 我指基本的運用。

laravel範例,laravel教學,livewire範例,laravel

如何在Laravel Livewire元件設定中文化的錯誤訊息

本文透過簡易的Laravel livewire範例,看看livewire元件如何驗證使用者輸入錯誤,並顯示中文錯誤訊息。