Laravel + Docker 輕鬆上手

Les Lee
一個小小工程師的隨手筆記
6 min readAug 30, 2019

laravel 是 PHP 環境中很受歡迎的框架之一。然而其安裝時對環境要求嚴格,對於初入門來說門檻有點高。

在 Docker 問世之後,有人便將 Laravel 完整的 Docker 化了。今天要介紹的便是這樣一套方便好用的開發工具 — LaraDock。

Laradock 將 Laravel 開發環境完整 docker 化,我們僅需要 git clone 這個 repo 下來,設定好適合自己的環境變數,即可架設起 Laravel 專案。

建立 Laradock

官網連結

首先我們使用以下指令將 laradock 的 repo clone 下來。

git clone https://github.com/Laradock/laradock.git Laradock

你會發現裡面滿滿的是各種 .yml 檔。這是因為 laradock 是使用「docker-compose」將不同的服務給串聯起來。因此,如果你電腦裡面沒有「docker-compose」,可以先到這邊安裝。

Laradock 是很完整的 PHP 解決方案,無論你是習慣使用 apache2 還是 nginx、喜歡mysql 或是 postgresql,它都已經包羅近來了。甚至連 redis, rabbitMQ 這些常用的緩存技術,也都為你設想到了。

laradock 專案包含了所有常用 php 相關服務的 docker 設定,幾乎都為我們設想好了

它最初僅是專門為 Laravel Docker 化,然而時至今日,它已經能支援了絕大多數的 PHP 框架,我們僅需要設定好環境參數即可。

在 laradock 資料夾中找到 env-example 並且複製一份更名為 .env 。這就是我們的環境設定檔。

cp env-example .env

接下來打開 .env 我們注意到以下幾個設定

其中:

  • APP_CODE_PATH_HOST:設定你的 laravel 專案要存放的位置在哪裡。(我這邊的例子是放在跟 laradock 專案同一個層級的 project 資料夾中)
  • APP_CODE_PATH_CONTAINER:設定你的專案要同步到「container 內」的哪個路徑,預設都是放在 /var/www 下面。
  • DATA_PATH_HOST:設定你的儲存資料(ex. database, redis 內的數據)要存放在哪。(我這邊的例子是放在跟 laradock 專案同層級的 data 資料夾中)

以上這些都設定完之後,我們就可以啟動 Laradock 了。

使用以下指令指定啟動包含「nginx」與「mysql」的 laradock。

docker-compose up -d nginx mysql

我們不用特別指定啟動「php-fpm」,因為 Laradock 會自己啟動包括 php-fpm 在內的 php-fpmworkspace

創建Laravel專案

在 laradock 啟動之後,會幫我們創建一個 workspace 。我們可以使用以下指令進入 workspace 的 docker 內。

docker-compose exec workspace bash

進入後,你應該會發現自己在 /var/www

此時的 /var/www 是連接外部 ../project 資料夾。

在這個環境中,已經裝好了 Laravel 所需的一切環境。因此我們可以直接使用以下指令創建我們的 Laravel 專案

composer create-project laravel/laravel --prefer-dist project_Name

待一段時間的安裝完成後,即可在 /var/www 中與 project資料夾中看到我們的 Laravel 專案。

設定 NGINX

有了 Laravel 專案,我們接下來要設定 nginx ,使其能夠連到我們的 Laravel 中。

Laradock/nginx/sites 資料夾中,找到 laravel.conf.example 並且複製一份,隨自己喜好命名。此處我們命名為 laravel.test.conf

cd ~/Laradock/nginx/sites
cp laravel.conf.example laravel.test.conf

注意到紅框處,我們要將其設定為我們 Laravel 專案的路徑。

其中:

  • server_name:代表你的網站的 domain,以本例子來說,我依照 laradock 的預設使用 laravel.test 代表,之後我們希望使用 http://laravel.test 連到我們的網站。
  • root:網站的進入點,我們設定在 laravel 專案中的 public。

設定 hosts

由於我們剛剛自訂了一個 laravel.test 的網址。我們要讓本機知道此網址其實就是 localhost。因此我們必須在 /etc/hosts 中增加以下這行(需要管理者權限)。

127.0.0.1 laravel.test

註:windows 的 hosts 放置於 C:\Windows\System32\drivers\etc\hosts

以上都完成後,我們重啟 laradock 將剛剛的設定全部套用。

docker-compose down
docker-compose up -d nginx mysql

開啟瀏覽器,應該就能看到 Laravel 專案的起始樣子囉!

p.s. 我的專案故意將 port 開在 8000,因此需要加上 port 號。

參考

--

--

Les Lee
一個小小工程師的隨手筆記

對新事物總是興緻勃勃、嘗試新技術、解決新挑戰; 也時常陷入許多無謂的思索,卡在其中得不出答案。