2017
08
03

用Docker建立Lravel開發環境超簡單[轉載於3C Tech Center]

關鍵字:DockerLaravel開發環境虛擬化

以下列出Laravel歷代版本的PHP最低環境需求: 

Laravel版本 PHP要求
        Laravel 4.2         PHP>=5.4
Laravel 5.0 PHP>=5.4, PHP<7
Laravel 5.1 PHP>=5.5.9
Laravel 5.2 PHP>=5.5.9
Laravel 5.3 PHP>=5.6.4
Laravel 5.4 PHP>=5.6.4
Laravel 5.5 PHP>=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版本變更,對我來說似乎沒有那的麼靈活。

所以使用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呢?

如果您是Windows 10在gitbash的環境基本上可以使用的,但是D-Laravel主要運作及測試的環境是以Mac OS為主。
Linux上執行應該是沒有問題的,如果您使用Linux執行有問題,可以開PR給我,謝謝。

一、首先,當然是我們的電腦要先安裝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

傑立資訊傑立資訊事業有限公司

電話:(02)2739-9096 | 傳真:(02)2739-6637 | 客服:[email protected] | 臺北市信義區和平東路3段257號6樓map

© 2019 傑立資訊 All rights reserved.