為什麼要讓本機使用 Docker 內 PHP?
情境…
docker 容器內用的是 PHP 7.4 但你的開發本機還在跑 PHP 5.6 或是更舊,因為 dockerize 的關係會將所有相關環境都轉移到 docker 下運作,所以本機與 docker 間的 PHP 版本不同是極有可能發生的。
然而因為本機與實際運作環境的 PHP 版本不同,造成編輯器提示錯誤…
所以上述問題應該怎麼解決呢?
當然放著不管也是一種方式,不過 VSCode 的 lint 可能就會一直叫或是看了不舒服… 🙈
本機使用、執行 Docker 內 PHP
(docker image 的建立細節可以參考 cscolabear/docker-dev: https://github.com/cscolabear/docker-dev/blob/master/phpWrapper)
1. 首先要確認有一個可以正常運作的 PHP docker image
2. 建立 phpWrapper
(空白檔)
phpWrapper 可以放在任何你喜歡的位置
內容為…
#!/bin/bash
docker run --rm -i \
-v ~/Projects:/var/www \
cscolabear/7.2-fpm php "$@"
替換上述值,對應你自己的系統:
/Projects
: 本機的專案目錄/var/www
: 容器內的專案目錄cscolabear/7.2-fpm
: 你的 php docker image 名稱
接著將 phpWrapper 設定為可執行
chmod +x phpWrapper
試著在同一目錄下執行~
# 取得 docker 容器內的 php 版號
./phpWrapper -v
3. 接著讓全系統都能使用這個方法~
# 切換目錄至
cd /usr/local/bin/
# 查看目前的 php 使用路徑
ll | grep php
# 若己存在,可以先備份或是刪除
# 新設定 php 並指向 phpWrapper 所在目錄
ln -s ~/phpWrapper php
# 查看是否連結成功
php -v
之後在另何情況下 php 都會使用 docker 容器內的版本
如果 docker 容器未啟用,系統將自動使用原生~
當然~ 這裡的 php 也可以是 nodejs 或其它有的沒有 😎