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

需要登入才可留言!

類似的文章


linux,docker,wifi

用docker建立WPA2/EAP企業用Radius驗證伺服器,後端使用mysql資料庫

AP提供了WPA2/EAP功能,但不會用嗎? 本文介紹我如何透過docker的ubuntu:21.04 image,極速建立Radius伺服器, 與Wifi的WPA2/EAP等相關運用。

docker, d-laravel, docker-compose, laravel

docker-compose載入多個設定檔

我們會用docker --network建立多個container互連,但是如果四個container時, 是不是就要下四次docker run不同container的指令,殺了我吧, 本文介紹透過docker-compose這個yaml檔定義一次搞定多個container的建立。 了解如何用dokcer-compose -f 參數載入多個設定檔。  

docker

Devin Yang的Docker初學筆記

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