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

在Linux上ping不到host.docker.internal

可用docker version检查,确认版本在Docker v20.10+即可添加extra_hosts如下:

docker,laravel

用Docker创建Lravel开发环境超简单

Laravel 5.5系统环境您准备好了吗? laravel/framework 5.5.x-dev requires php >=7.0 -> your PHP version (5.6.30) does not satisfy that requirement. 这篇文章描述如何使用Docker创建Laravel的开发环境。 有了简单到爆炸的D-Laravel简易bash, 不要在说我无法创建Laravel的开发环境了。

docker

移除所有docker containers及docker images的命令

有时在自己的环境中试了一堆container或是images,如何全部移掉系统中所有的images及container 呢?这些命令提供给大家参考..