php - Docker网站目录是挂载方式好还是拷贝进容器好?
伊谢尔伦
伊谢尔伦 2017-04-11 10:22:58
[PHP讨论组]

最近在研究docker和持续集成的相关知识,LNMP情况下,我把phpnginx分别单独做到不同的镜像里,目前是通过挂载网站目录到宿主机的方法。

如果做持续集成,是通过挂载网站目录的方式好还是把网站目录COPY进容器好呢?

在持续集成的情况下,是不是如果是挂载,每次提交后只用更新宿主机网站目录就行了,如果COPY,每次都要重构nginx容器?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
黄舟

正好这个问题我也想过很久,其实有几种方案,各有利弊:

  1. 把nginx和php作为两个容器,代码另外放在volume,分别供php和nginx两者挂载

    • 好处:代码更新灵活

    • 坏处:感觉这作为一个服务来说很“山寨”(可以和Java/NodeJS的服务类比一下);另外,如果你用到了composer,依赖部分无法在制作镜像中过程中自动化安装

  2. 把nginx作为一个容器,php和代码放在另一个容器,但其中代码目录也需要供nginx挂载

    • 好处:相比1,可以把composer放入PHP容器中,制作镜像时帮你安装依赖

    • 坏处:作为服务依然很“山寨”

  3. 把nginx、php和代码全放入同一个容器

    • 好处:更符合微服务的定义,整体对外构成一个服务;nginx和php之间可以直接用unix socket通信

    • 坏处:除了灵活性之外,不太符合Docker官方一个容器只跑一个服务的建议

个人在开发、集成时都是用了方案2,如果以后用到swarm可能会在生产环境用方案3

听你的方案,好像是想把nginx和代码放入一个容器,把php单独放入另一个容器?这种方案好像并没有什么意义,上述2、3的好处它都没有。

PHP中文网

楼上已经给了三个方式了,我来说说实际大规模集群中的吧
在大规模集群中,不关心服务内部是怎么做的,所以更期望一个整体对外提供服务,至于怎么提供,这不属于集群调度职责
所以,在大规模集群中,只有第三个方案:将代码,代码运行环境放入集群中
并且,在大规模集群中,前面都是有负载均衡网关的,所以容器中根本不会有Nginx

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号