最近一直在搞前后端分类,一直在想前端的html页面应该用什么部署
想来想去,如果用tomcat好像有点浪费资源,作为程序员自然要时时刻刻追求新的东西
一直以来都是在apache tomcat上面运行,今天来尝试一下nginx
至于两个性能和效果如何,大家可以参看
废话少说
我们来利用docker来部署nginx项目
首先我们假设docker 安装成功,并且也获取了nginx镜像,如果还没有安装可以安装一下
从镜像上面我们可以看到的是nginx和tomcat大小比较区别还是很大的,对于我们这种在阿里云上购买一个小的服务器,运行着开发的人员来说,内存小还想追求高的性能,可以考虑使用nginx
第一步启动nginx :docker run -d -p 80:80 --name nginx2 nginx
上面的解释一下:
docker run -d 表示后台运行
-p 80:80 第一个80是宿主机的端口,第二个是容器的端口
-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器。支持的格式有 hostPort:containerPort
、ip:hostPort:containerPort
、 ip::containerPort
。
--name nginx2 表示容器的名称
最后的一个nginx 表示镜像
我们先把这个容器删了,换一个容器端口
我们映射容器为nginx端口为:3766
这个时候去访问页面是打不开的
其实这个就是说,我们docker在启动nginx容器的时候,需要默认用容器的80端口这样才能进行访问
真的是这样的,我们能不能修改nginx默认的80端口
docker cp nginx2:/etc/nginx/conf.d/default.conf default.conf
docker cp default.conf nginx2:/etc/nginx/conf.d/default.conf
docker restart nginx2
修改了配置文件之后我们要做重新访问页面
发现就可以了
上面我们介绍的是如何启动ngxin和如何修改nginx的默认的的端口
我们可以看到的是我们每次修改nginx的配置文件需要复制出来,修改,然后复制回去
这样来说甚是麻烦
我们可以通过挂载的方式来解决来回cp的问题
我们把前面创建的nginx2的default.conf放到一个文件夹里面
比如:我们把default.conf 存放在/home/nginx/default.conf
然后我们启动:
docker run -d -p 80:3766 -v /home/nginx/default.conf:/etc/nginx/conf.d/default.conf --name nginx2 nginx
再次访问:
此时此刻我们的default.conf配置文是放在容器外部的
如果我们修改上面的 nginx监听的端口,然后重启容器发现无法访问页面了
这个时候说明的是我们的配置文件生效了
我修改成为:3767 容器中这个端口是没有开放的
看来我们的配置文件是有效果的
我们来看这个命令
docker run -d -p 80:3766 -v /home/nginx/default.conf:/etc/nginx/conf.d/default.conf --name nginx2 nginx
-v 创建一个挂载,前端是宿主机的路径 后面的 是容器中的路径
我们发现nginx里面有一个location / 这个是静态文件的路径
我们想,如果我们将我们的静态文件夹存放在宿主机上,然后做一个挂载放在容器里这个路径,那么我们是不是修改宿主机上面的 静态文件,对应的容器的静态文件也会进行修改
这个就是实现了我们前端页面用nginx显示的需求吗
我在home目录下创建一个wwww文件来存放我的静态文件
先放一个index.html文件吧
其实里面就是一个hello world
下面我们要启动nginx
docker run -d -p 80:3766 -v /home/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /home/www:/usr/share/nginx/html --name nginx2 nginx
上面就是部署的整个过程
希望对你有所帮助