Docker 使用思考
学习完之前的课程的同学,相信已经使用 docker 组装出自己需要的开发环境了并使用上了吧。这节来对 docker 进行深入思考。
如何合理使用 Docker
问题:
镜像中应该包含项目吗?项目变动都要重新打包镜像不用的话,只不过是一个线上环境而已
包含项目的镜像应该如何管理配置,开发、测试、线上配置网上都是使用 .env 文件来替换项目参数,但是泛用性太差了打包到镜像中会让配置变动变得异常困难
项目中有外部的项目依赖,需要放在镜像中一起打包吗没必要把加上去,在项目镜像中添加处理命令,也能减小镜像大小
项目需要依赖于 nginx 里的映射,项目已经在 php-fpm 里面了,如何完成交互
2021.11.27 小结
单纯只用来做开发环境是个不错的选择,能切换不同的环境来测试项目的适用性,也能很方便的模拟不同的架构。
Note:
这里挖个坑,php 和其他编译形的语言不同,无法解决上面说的不同环境的配置管理,在我眼中它就只能是个开发环境
2022.3.6 小结
镜像当然需要包含项目,依赖包那些可以不打包上去(减少镜像大小),实例时才进行拉取。镜像最后是启动项目,当然只有像 swoole 这种类型的项目需要自行启动。
配置变更要重新打包的问题,在了解微服务架构时,我找到了解决方法,那就是远程配置管理功能(nacos 里的配置管理),项目使用 nacos 的远程配置,配置变动时只需在 nacos 上修改即可。不同场景的仍需要分别打包。
用习惯了 lnmp 架构,就忘记了更传统的 lamp 架构,apache是把php当模块进行加载的,这种就能很好的避免 nginx、php-fpm 两个都需要映像相同的项目目录。只需要把项目住 php-apache 里打包即可,后期还可以使用 nginx 的反向代理来做负载均衡。