Heim >Backend-Entwicklung >PHP-Tutorial >Docker:PHP7镜像构建问题

Docker:PHP7镜像构建问题

WBOY
WBOYOriginal
2016-06-06 20:12:111219Durchsuche

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

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

回复内容:

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

如上图红框中所示,
大概意思是让我在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挂载本地文件夹。
比如你做了一个外包项目,你把代码打包在镜像里面,再把镜像发给别人,这种情况下你不用分开。
如果你在开发项目的过程中,你把代码和运行环境分开的话才能更好的开发,否则每次改一下代码就要打包一下。

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn