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

关於Docker的Logging Driver

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

docker

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

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

linux,docker

如何在Container内运行X client及X Window简介(docker gui)

今天来跟大家谈谈X,不是iPhone X,也不是X战警哦 ,而是X Window System, 他是目前Linux系统主要的图形化界面显示组件。 由於他非常易於扩展及模块化,打从1986年创建,就一直使用至今。 X Window系统采用的为Client / Server的架构,把应用进程跟显示拆分为二, X Windows的应用进程通常我们称为X Client,而显示则是大家所熟知的X Server。 X client与X server透过X协议(X protocol)沟通,这是一个异步的网络通信协议。