環境
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 的情況:
- 將源碼 clone 至新增的專案下。
- 切換至 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 不同環境,之後有需要時可以再試試看。
整體來說,快速部署這件事真的很帥,而且環境一目了然,不用去擔心自己電腦因為開發項目變多而變得太冗太雜。