基于Ubuntu20.04构建自己的nginx和php Docker镜像
这篇是关于基于官方的Ubuntu 20.04 Docker镜像构建自己的nginx和php镜像。
首先为什么要构建自己的镜像而不是直接使用官方的nginx和php镜像?
虽然官方的包体积比较小且启动方便,但不是完全可控的,除非你对它的nginx和php配置非常熟悉,不然二次构建是比较麻烦的,比如装个扩展什么的。
所以我们要构建自己的镜像,想怎么用就怎么用,知根知底,改起来也方便。
Home of Little Jelly
这篇是关于基于官方的Ubuntu 20.04 Docker镜像构建自己的nginx和php镜像。
首先为什么要构建自己的镜像而不是直接使用官方的nginx和php镜像?
虽然官方的包体积比较小且启动方便,但不是完全可控的,除非你对它的nginx和php配置非常熟悉,不然二次构建是比较麻烦的,比如装个扩展什么的。
所以我们要构建自己的镜像,想怎么用就怎么用,知根知底,改起来也方便。
最近在学习Kubenetes,把Nginx,PHP,MySQL都以集群的方式部署到了Kubenetes下。
部署完成之后,找了个FastAdmin的项目来测试下有没有什么问题。
其它问题就不说了,主要是中文乱码的问题。
环境为Docker下的Ubuntu 20.04,要为其配置nginx和php,其中php以fastcgi的方式运行(php-fpm)。
因为是Docker环境,故以下操作都直接以`root`身份运行。
本篇内容是在Kubernetes部署MySQL主从同步并读写分离。
由于笔者在Kubernetes上是新手,刚刚入门,所以参考了网上其它人写的文章来完成这一过程。
参考教程链接
前面我们已经用Kubernetes部署了nginx集群,也用Docker分别部署了nginx和php-fpm服务,那么是否可以用Kubernetes来组合部署nginx和php-fpm呢?
答案是可以!
相当于把之前两次的部署方式结合起来,具体过程就不写了,配置文件有点多。
用PHP开发网站时,传统的部署方式是将Nginx和php-fpm服务部署在同一台服务器上,在Docker大行其道的今天,是否可以将它们使用Docker分别部署呢?
答案是可以!
准备容器
这里我们使用官方的ubuntu和php镜像先创建两个容器
接下来我们在Kubernetes是部署一个可以扩展的nginx集群。
因为是在Ingress上部署的,所以前提是你的Kubernetes集群上已部署Ingress,如果没有,参考这篇 Kubernetes安装配置Ingress https://www.pimspeak.com/kubernetes-deploy-config-ingress.html
首先创建nginx Deployment和Service的配置文件 `nginx.yaml`
Docker关联容器并通信可以通过在同一网络下创建容器来实现。
优点:
1. 直接通过容器名称即可访问;
2. 当容器重新启动后,容器的IP可能会变,而通过容器名称访问则无需手动修改IP。
`Helm`是Kubernetes上的包管理器,在Mac上通过`brew`安装它。
安装
命令如下
Docker在创建容器时,可以加参数`–restart=always`使容器自启
即
docker run -it –restart=always