Docker实战之通过nginx镜像来部署静态SPA项目
Docker中安装Nginx
本章主要是教大家怎么在Docker 中使用nginx
文章目录
- Docker中安装Nginx
- 前言
- 一、Docker中安装nginx
- 1.1搜索nginx镜像
- 1.2拉取镜像
- 1.3宿主机中创建挂载目录
- 1.4用nginx镜像创建nginx容器(测试nginx的安装与访问)
- 1.4.2测试nginx是否安装成功
- 二、通过nginx镜像来部署SPA项目
- 1.创建一个新的nginx容器
- 2.编写nginx.conf配置文件
- 3.nginx发布静态vue项目
- 三、总结
前言
Nginx是一款服务器,我们常用它做如:反向代理、负载均衡、动态与静态资源的分离的工作,
反向代理:反向代理(Reverse Proxy
)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,
并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
负载均衡:目前大多数的网站都会采用负载均衡手段来针对目前用户的指数级增长来减少对单点服务器的负载压力,
比如目前我们拥有3台真实服务器,我们需要根据相应策略决定什么样的用户请求分配到哪个真实服务器,比如按照轮询的方式,
用户请求挨个到达代理服务器,此时代理服务器按照第一个请求转发至第一台真实服务器,第二个请求转发到第二个服务器上,依次类推,
这样可以防止大量的用户请求全部访问到同一台物理机上,单点物理机的性能始终有限的,当然这可能对服务器数据访问时候造成事务性的失效,
一、Docker中安装nginx
1.1搜索nginx镜像
docker search nginx
1.2拉取镜像
docker pull nginx
1.3宿主机中创建挂载目录
mkdir -p /data/nginx/{conf,conf.d,html,log}
命令解释:
注1:因为在nginx镜像中没有安装vi或vim编辑器(安装又太麻烦了),无法编辑nginx配置文件,所以直接通过数据卷挂载上去更加方便
注2:将nginx配置文件nginx.conf上传到宿主机的挂载目录“/data/nginx/conf”下
注3:将vue前端项目打包后上传到宿主机的挂载目录“/data/nginx/html”下并解压
解压命令:
unzip dist.zip
1.4用nginx镜像创建nginx容器(测试nginx的安装与访问)
docker run \--name mynginx \-d -p 80:80 \nginx:latest
1.4.2测试nginx是否安装成功
打开浏览器输入:( http://宿主机ip:80),正常情况下会显示nginx的欢迎页面
错误提示:
如果出现外部服务器连接不上! 则需查看本宿主机是否启动80端口
二、通过nginx镜像来部署SPA项目
1.创建一个新的nginx容器
docker run \--name mynginx \-d -p 80:80 \-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \-v /data/nginx/log:/var/log/nginx \-v /data/nginx/html:/usr/share/nginx/html \nginx:latest
注释:
注1: 因为在nginx镜像中没有安装vi或vim编辑器(安装太麻烦了),无法编辑nginx配置文件,所以所有数据和配置都是通过数据卷挂载
第一个-v:挂载nginx的主配置文件,以方便在宿主机上直接修改容器的配置文件
第二个-v:挂载容器内nginx的日志,容器运行起来之后,可以直接在宿主机的这个目录中查看nginx日志
第三个-v:挂载静态页面目录
注意命令之间的换行与空格
2.编写nginx.conf配置文件
#工作进程的个数,一般与计算机的cpu核数一致
worker_processes 1;events {#单个进程最大连接数(最大连接数=连接数*进程数)worker_connections 1024;
}http {include mime.types;#文件扩展名与文件类型映射表default_type application/octet-stream;#默认文件类型sendfile on;#开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off。keepalive_timeout 65; #长连接超时时间,单位是秒gzip on;#启用Gizp压缩#服务器的集群#upstream tomcats { #服务器集群名字#TODO:172.17.0.3是docker容器的IP #server 10.0.10.2:8080 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。#server 10.0.10.3:8080 weight=2;#} #当前的Nginx的配置server {listen 80;#监听80端口,可以改成其他端口server_name localhost;#当前服务的域名,没有域名可随便填写root /usr/share/nginx/html/dist;#将要访问的网站的目录location / {try_files $uri $uri/ /index.html;#该句代码是为解决history路由不能跳转的问题,在vue-router官网有介绍}#location ~ .*\.{#^~/api/表示匹配前缀是api的请求,proxy_pass的结尾有/, 则会把/api/*后面的路径直接拼接到后面,即移除api#proxy_pass http://tomcats/;#}}
nginx.conf讲解:
1.所有配置必须以“;”结尾
2.nginx发布java项目
nginx+tomcat实现反向代理及均衡
upstream tomcats{
#TODO:172.17.0.3是docker容器的IP server 172.17.0.3:8080 weight=1;#服务器配置 weight是权重的意思,权重越大,分配的概率越大。
3.nginx发布静态vue项目
将vue前端项目打包后上传到宿主机的挂载目录“/data/nginx/html”下并解压
效果图:
三、总结
nginx可以防止大量的用户请求全部访问到同一台物理机上
Docker实战之通过nginx镜像来部署静态SPA项目相关推荐
- Ubuntu配置Nginx部署Vue SPA项目
Ubuntu配置Nginx部署Vue SPA项目 文章记录了部署Vue SPA项目后可从ip访问的过程,因域名访问需要备案暂未尝试,后续若实行亦会更新在此处. 系统为Ubuntu18.04. Ngin ...
- VUE - Apache 部署 Vue SPA 项目,刷新 404 , Apache 配置处理
问题描述 因一些原因,使用 Apache 部署 Vue SPA 项目,静态路由刷新后 404 ; 官方推荐 https://router.vuejs.org/zh/guide/essentials/h ...
- 构建nginx镜像,部署到k8s
创建dockerfile(Dockerfile-web),通过dockerfile构建nginx镜像 FROM nginx:stable-alpine COPY nginx.conf /etc/ngi ...
- Nginx反向代理部署多个项目
需求 假设现在有一个顶级域名ouou.com和三个二级域名white.ouou.com,blog.ouou.com,default.ouou.com,这4个域名都跟同一个IP进行绑定.三个二级域名分别 ...
- 用docker容器来制作nginx镜像
实验环境: cent os 7 服务器一台,访问客户机一台 实验步骤: 安装在线yum源 mkdir /root/dockerRPM yum install --downloadonly --do ...
- Nginx+Supervisor安装部署.NET Core项目
部署环境 OS:CentOS7 .NET Core SDK:2.2.402 安装.NET Core SDK 1.1 安装依赖yum install libunwind libicudotnet ...
- 【Flask】Nginx+Gunicorn+Supervisor部署一个Flask项目:步骤总结
为什么要使用gunicorn? Flask 作为一个 Web 框架,内置了一个 webserver, 但这自带的 Server 到底能不能用? 官网的介绍: While lightweight and ...
- linux docker nginx,CentOS7上Docker简单安装及nginx部署
安装 如果原来安装过docker,先把原来的删掉,再安装(如果是首次安装docker忽略第一步,直接在第二步看起) 1.1先查看下已经安装了那些docker yum list installed | ...
- docker安装nginx镜像
参考 https://www.w3cschool.cn/docker/docker-install-nginx.html访问 NGINX 镜像库地址: https://hub.docker.com/_ ...
最新文章
- 退出出库复核是什么意思_干货 | 电商仓储与传统仓储有什么不同?
- 2.1.2 数据通信基础知识
- mogilefsd同步速度调优
- 荷花旁的浪漫,优雅了谁的光年,清纯少女芭蕾写真
- 将SVN与BUG跟踪管理集成
- java 全局变量 内存不回收_JAVA知识梳理:内存管理与垃圾回收机制
- 玩通信设备的,来这里学习
- Android开发之APP打开小程序后小程序无法返回APP,无法打开APP,launchApp无法返回app的原因
- 【Luogu1393】动态逆序对(CDQ分治)
- shuffle洗牌算法java_js打乱一个数组 的 洗牌(shuffle )算法
- int 和String之间的互转
- spring 事物管理器
- 高等数学——详解洛必达法则
- 《完全写作指南》随笔
- stm32学习探究:利用TB6612驱动直流电机
- Java面试笔试题大汇总一(最全+详细答案)
- 【C++】多态/虚函数/虚表指针,虚表
- C++中关于数据小数点,取整的方法
- LoadRunner参数化
- labelme画出的标注json转换成二值标签图,并解决label全黑问题
热门文章
- 什么是 返点、分销、直销、代理、代销
- python酷q机器人_python qq机器人开发 利用Python读取QQ消息
- FastStone Capture的使用
- 实况足球11 PES2008发布了!!!
- PS创意合成犀牛背上的美女(附素材)
- MATLAB应用1——MATLAB傅里叶变换函数封装
- 操作系统-1.设计的原则
- 北理计算机网络实验报告,北京理工大学计算机网络实践ftp客户端实验报告.doc...
- #每天一篇论文#238/365 基于注意力的上下文聚合网络用于单目视觉深度估计
- Halcon2019软件安装教程