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,laravel

[D-Laravel]./console node

进行Laravel开发时,有时我们会需要透过npm安装nodejs的包,但是偏偏我们系统中的Node又不够新。 或许因某些因素没法升级,例如要跑旧版的nodejs进程等。 其实我们可以透过简单的命令,用docker,让我们就能使用最新版本的node image来挂载host端的/sites数据夹罗。 这么一来我们就可以随时运行新版本的npm命令啦。

docker, d-laravel, docker-compose, laravel

docker-compose加载多个设置档

我们会用docker --network创建多个container互连,但是如果四个container时, 是不是就要下四次docker run不同container的命令,杀了我吧, 本文介绍透过docker-compose这个yaml档定义一次搞定多个container的创建。 了解如何用dokcer-compose -f 参数加载多个设置档。  

laravel docker

关於D-Laravel的项目模式

如果您是新使用者,建议您改用我的最新环境phpenv。https://github.com/DevinY/phpenv