当前位置:Gxlcms > PHP教程 > Docker:PHP7镜像构建问题

Docker:PHP7镜像构建问题

时间:2021-07-01 10:21:17 帮助过:26人阅读

Docker hub的php官方镜像https://hub.docker.com/_/php/
使用说明有这么一段:

如上图红框中所示,
大概意思是让我在php代码目录新建一个Docerfile,然后把代码和下载的php镜像打包到一起构建一个新的镜像,是这意思吧?
那这镜像好大,并且,为什么要放到一起?分开不是很好吗?
没太理解,是我理解错了?
放到一起更新代码和php都不方便,docker不是推荐每个服务分开放置吗?为什么这里要这么做?请大神帮解释一下。

回复内容:

Docker hub的php官方镜像https://hub.docker.com/_/php/
使用说明有这么一段:

如上图红框中所示,
大概意思是让我在php代码目录新建一个Docerfile,然后把代码和下载的php镜像打包到一起构建一个新的镜像,是这意思吧?
那这镜像好大,并且,为什么要放到一起?分开不是很好吗?
没太理解,是我理解错了?
放到一起更新代码和php都不方便,docker不是推荐每个服务分开放置吗?为什么这里要这么做?请大神帮解释一下。

看来题主不怎么理解Docker的运行模式啊。

首先,这是使用Dockerfile构建镜像的过程,第一句

FROM  php:5.6-cli

表示了这个镜像构建自官方的 php:5.6-cli 镜像的基础之上。

好了,基于这个Dockerfile,使用 docker build 命令就可以构建一个新的镜像了。
容器是基于镜像启动的,一个镜像可以启动多个容器。

COPY 指令将当前目录的代码放进了容器内部的目录下,且设置了 WORKDIR 具体含义请参考官方文档。

最后的 CMD 命令是容器启动时的要执行的bash命令。

好了,至此,整个大概的流程就是这样。

在Docker的工作机理上来说,容器基于镜像启动之后,其与宿主机之间是隔离的,所以,你得把代码放进容器内部才能使用内部的 PHP 环境。多个容器之间为了绕过联合文件系统,达到文件的共享的话,请参阅 VOLUME 指令。

docker就是这样的流程,你的代码要重新放到一个镜像 , 如果你要自己做php7镜像 可以看看这个: docker php7镜像

大概意思是让我在php代码目录新建一个Docerfile,然后把代码和下载的php镜像打包到一起构建一个新的镜像,是这意思吧?

是这个意思,你的理解没有问题

那这镜像好大,并且,为什么要放到一起?分开不是很好吗?

可以分开,也可以不分开,取决于你的需求。
不分开就是在Dockerfile中COPY文件夹进去,分开的话在run镜像的时候指定-v挂载本地文件夹。
比如你做了一个外包项目,你把代码打包在镜像里面,再把镜像发给别人,这种情况下你不用分开。
如果你在开发项目的过程中,你把代码和运行环境分开的话才能更好的开发,否则每次改一下代码就要打包一下。

人气教程排行