Home >Backend Development >PHP Tutorial >Docker:PHP7镜像构建问题
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构建镜像的过程,第一句
<code>FROM php:5.6-cli</code>
表示了这个镜像构建自官方的 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挂载本地文件夹。
比如你做了一个外包项目,你把代码打包在镜像里面,再把镜像发给别人,这种情况下你不用分开。
如果你在开发项目的过程中,你把代码和运行环境分开的话才能更好的开发,否则每次改一下代码就要打包一下。