by Devin Yang

建立於: 7年前 ( 更新: 7年前 )

使用情境

Docker的世界,我們透過Dockerfile建立image ,並且透過docker commit產生新的image,
再把image push到Docker registry。(例如:Docker Hub)。
我們會在docker-compose的yaml檔去定義service及要使用的image,
因此當我們執行docker-compose up時,
docker會檢查docker-compose.yml內設定的image是否已存在我們的系統中,
如果沒有,就進行下載,然後用該image為樣版(image是一唯讀的樣版),建立出container(容器)。
 

D-Laravel

dlaravel的骨子裡,就是docker,只不過多了簡易的bash讓我們快速用docker的指令產生contaner
大家或許會好奇為何要用bash,因為我要讓大家可以去檢視及了解D-Laravel是如何執行(如果您想了解)。

話說回來,也就是說當我們下了./console up的指令時, 他就是執行docker的官方指令docker-compose up -d
因此如果我們已下載過了某一個image,像是deviny/fpm:7.2.17,下次啟動docker-compose就不會再下載該image來建立container了。
那我們如何透過指令的方式來更新這個調整過的image到自己的電腦呢?
我們可以用指令 docker pull deviny/fpm:7.2.17來進行更新。

關於D-Laravel的Image,應該盡量使用最新版的PHP版號為主,
主要會有PHP本身安全性及Bug的修正,包含了D-Laravel運作環境的一些更新及調整。

雖然D-Laravel的image中提供很多不同的PHP版號的tag...
https://hub.docker.com/r/deviny/fpm/tags/

例如:
php 7.1.7及php 7.1.28 建議選擇7.1.28

php 5.6.30及php 5.6.31 建議選擇5.6.31

我們應該採用較新的版本在自己的docker-compose-custom.yml設定中。
如果您的D-Laravel資料夾,沒有docker-compose-custom.yml,可以透過./console custom 來產生及使用。

如果您發現D-Laravel中有些image內的php擴充是不能用的,例如,在其他的平台上PHP可以執行,
但是D-Laravel上無法執行,歡迎開PR給我,或是在D-Laravel的專屬聊天室中留言哦,我會視情況新增這個擴充。

那如何更新我們已使用中的image呢 (相同tag名稱的image)?
例如,依deviny/fpm:7.1.8的image為例,可以嚐試看看,git pull deviny/fpm:7.1.8
$docker pull deviny/fpm:7.1.8
7.1.8: Pulling from deviny/fpm
Digest: sha256:3b3f9c98bd143c1487c70fa9b072dd95915aaec84b1ab8b1de61940dd015bf55
Status: Image is up to date for deviny/fpm:7.1.8
基本上D-Laravel的image同版號變更的頻率很低,
除非您真的使用上碰到一些問題,例如某些擴充無法使用,否則您無需進行此動作

如果有較新的tag時,可以直接使用較新的tag,例如: deviny/fpm:7.1.9

在新版本的D-Laravel中,我們可透過./console ext查看目前安裝已編譯的php外掛有那些。

重建自己專有的image

當然,您絕對可以重建自己的D-Laravel使用的php-fpm image, 來符合您自己的環境需求
步驟如下:
#在D-Laravel的目錄執行
cd dockerfiles/fpm/7.3
#查看目錄下是否有個Docekrfile
ls
#用編輯器修改,Dockerfile加入更多的php擴充
#再用下方的指令build自己的image。
docker build -t myphp .
完成後,記得修改您docker-compose.yml中php服務的image為您的image名稱,此處為例叫myphp。
最後,重啟容器,看看是否work囉。
 ./console restart

如果您對於D-Laravel有任何的疑問或是重建image的問題,歡迎到以下聊天室留言討論哦。
D-Laravel聊天室

Tags: docker

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


docker

Devin Yang的Docker初學筆記

這是我初學Docker時的筆記,有點粗糙,有調整了一下下。 但我想對於Docker初學者,應該可以提供一些初步的概念, 歡迎參考看看。

docker

關於GCE上FPM image如何變更owner

CCC網站升級php 7.2.0囉,有Docker的環境,輕鬆搞定php升級, 在Linux上Image的變更還是有些注意事項您應該了解。 如果您跟我一樣透過docker將D-Laravel安裝於Linux的系統上,當您變更不同的image時, 或許您可能會碰到,疑!怎麼composer沒有權限寫入資料夾的錯誤。 directory is not writable

docker laravel

閒聊D-Laravel的console指令

D-Laravel的console指令讓我們快速的了解他執行了什麼。如果使用docker-compose是怎麼執行的呢? 我們來看看吧。