by Devin Yang

建立于: 6年前 ( 更新: 6年前 )

使用情境

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

如何在Raspberry上用Docker启动HAProxy

Raspberry很便宜有相当多的运用,例如有人拿来当Wifi的router, 游戏机,监视器及许许多多物联网相关运用,我则是用他来当一台HAProxy。 长话短说,因为有一台老旧的Windows伺服器,他运行旧版本的PHP及Apache,并且无法设置HTTPS证书,所以就想说 透过HAProxy来帮忙啦。让这台老旧伺服器也可以有https的网址, 所以来分享我的docker-compose.yml设。

docker

关於Docker的Logging Driver

Docker内建相当多的日志机制,帮我们取得在container内运行的服务信息。 这些机制(mechanisms)我们通常称为logging drivers.

openspeedtest,docker,phpenv

用phpenv跑openspeedtest

虽然我们可能会用speedtest之类网站进行上下传的速度的测试,那如果我们想测自己的Server的速度呢?像是用户在别的国家,连到我们的主机速度快慢 ,这时self-hosted的测试工具就很方便啦。最新版本的phpenv在services的yml档中,添加了openspeedtest.yml罗。