Laradock — Laravel + Docker 輕量級環境打造

Yifan Wu
Yifan Wu
Feb 21, 2018 · 5 min read

前言

過年在家沒事做,想起之前朋友推薦的 laradock,Laravel + Docker 的應用,於是就花個時間來研究了。


環境

Laravel version : 5.4
Docker version : 17.09
OS : macOS
Laradock last installed : 2017 / 02 / 18

Official Docs : http://laradock.io/introduction/
Reference:https://www.youtube.com/watch?v=OcZEbwxdg4Q

Laradock 的維護在 git 上為眾多 contributors 的功勞,然而官方提供的「完整文件」並未提到 laradock 本身的 bug 問題或是使用者發現的其他問題,必要時需要在源碼 issue 中自行尋找解答。


1. 基本安裝與測試

http://laradock.io/getting-started/#A

官方有針對新專案與舊專案兩種方式:

New Project 的情況:

  1. 將源碼 clone 至新增的專案下。
  2. 切換至 laradock 資料夾,複製 env 檔案。
cd laradockcp env-example .env

前陣子更新時 docker-compose.yml 內改成吃 .env 的參數了,若沒有此步驟就啟用的話會噴錯。

3. 啟動 container。

docker-compose up -d nginx mysql

4. 測試首頁的連線
開啟瀏覽器,網址列鍵入 localhost,,確認伺服器運作。

5. 更換域名
若想要換 localhost,在 /etc/hosts 下新增網域名以方便日後多重專案的開發。

6. 更改 DB_HOST
切回專案資料夾,開啟 .env 檔案,將環境參數的 DB_HOST 從 127.0.0.1 改成 mysql
DB_HOST=mysql

已有 Project 的情況:

改成 git add submodule,並處理好版本控制。

< 小囉唆 >
1. Laradock 的 .env 與專案本身的 .env 檔案不要搞混
2. 若有使用版本的問題,可以先設定好參數再啟用 container
目前已知「初」建立好環境時,~/.laradock/data 下的資料有可能因為使用者電腦而無法被覆蓋,導致環境版本停留在最初啟用的狀態,必要時有可能需要刪除 ~/.laradock/data 下的資料。
例如:mysql 降版本的情況,要刪除 ~/.laradock/data/mysql 再 re-build。

本人第一次使用時有遇到這個問題,然而第二次時降版本就滿順利的,因此列出來提供參考。


2. 版本更改

http://laradock.io/documentation/#change-the-mysql-version

  • MySQL

laradock/.env 檔案內的參數。

MYSQL_VERSION=5.7 (Example)

然後 re-build:

docker-compose build mysql。

Rebuild 完後要重啟 contianer !

注意 MySQL 的 downgrade 或 upgrade 可能會在 build 時遇到問題,爬 issue 串的解法是 rm -rf ~/.laradock/data/mysql,代價是資料會消失

  • PHP
    預設 7.0,若要更改直接至 laradock/.env 改參數就好,若是要降至 5.5,官方有提供另外一個作法,需額外操作。
docker-compose build php-fpm

Php-fpm vs php-cli:需要更改的是 php-fpm 的版本。


3. 新增資料庫

http://laradock.io/documentation/#create-multiple-databases-mysql

laradock/mysql/docker-entrypoint-initdb.d 下的 createdb.sql.example 複製一份命名為 createdb.sql,這個就是操作 DB 的 sql,可以照裡面的 comment 做資料庫的新增、使用者權限調整,用一般的終端下指令就可以。


4. Laravel 指令操作

http://laradock.io/getting-started/#usage

原本安裝在 terminal 環境中的 artisan 指令現在無法直接對專案目錄下,必須透過 container 下指令。

docker-compose exec workspace bash 
root@ae342346:/var/www# php artisan migrate

接著去資料庫查看,就可以看到變化了。


心得

把各個 container 參數化滿方便的,已經熟悉 Docker 的話在看 Dockerfile 時會很快得了解到 laradock 的架構。
目前我僅試了單一 Project 單一環境的情況,另外 laradock 還可以不同 Project 同一個環境、不同 Project 不同環境,之後有需要時可以再試試看。

整體來說,快速部署這件事真的很帥,而且環境一目了然,不用去擔心自己電腦因為開發項目變多而變得太冗太雜。

Yifan Wu

Written by

Yifan Wu

| Studying in NCTU | Majoring in Computer Science | Student Engineer

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade