【Docker】安装 Nginx 容器并部署前后端分离项目

news2024/11/28 6:25:14

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的专栏《Docker实战》。🎯🎯

👉点击这里,就可以查看我的主页啦!👇👇

Java方文山的个人主页

🎁如果感觉还不错的话请给我点赞吧!🎁🎁

💖期待你的加入,一起学习,一起进步!💖💖

请添加图片描述

一、Nginx的简介

Nginx是一个高性能的开源Web服务器和反向代理服务器,也可以用作负载均衡器、HTTP缓存、邮件代理(IMAP/POP3)等。它最初由俄罗斯的工程师Igor Sysoev开发,并于2004年首次公开发布。

Nginx因其简洁、高效和可靠的特点而备受欢迎。相比传统的Apache服务器,Nginx使用更少的系统资源,可以处理更多的并发连接。它采用事件驱动的异步架构,能够有效地处理高并发请求和大量的并行连接。

Nginx的主要特点包括:

  1. 高性能:Nginx采用了非阻塞的事件驱动模型,在同等硬件条件下能够处理更多的并发连接,具有出色的性能表现。

  2. 轻量级:Nginx的代码精简,内存占用较少,启动速度快,适用于资源受限的环境。

  3. 反向代理:Nginx可以作为反向代理服务器,接收客户端请求并将其转发给后端服务器,实现负载均衡和提高网站性能。

  4. 静态文件服务:Nginx可以快速、可靠地提供静态文件的访问服务,减轻后端应用服务器的负载。

  5. 动态内容处理:Nginx提供了强大的模块化架构,可以与各种后端应用服务器(如PHP、Python、Node.js)集成,处理动态内容的访问请求。

  6. 高可靠性:Nginx具备高度稳定性和可靠性,在大规模的互联网应用中被广泛使用。

二、创建Mysql容器

创建mysql之前需要做一个事情,mysql需要一个my.cnf的配置文件,目前我们还没有所以需要在宿主机上创建一个将该文件放入到目录中

mkdir  -p /mysql/{conf,data}

为了让我们的容器之间可以相互访问,所以我们创建一个网络

docker network create --subnet 172.18.0.0/16 --gateway 172.18.1.1 net

 现在创建容器就需要为它指定我们的自定义网络

docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
--net net \
--ip 172.18.0.1 \
-d mysql/mysql-server:5.7

进入我们的mysql容器进行登录

docker exec -it m1 bash


mysql -uroot -p

 登录成功以后,我们现在需要一个账户进行远程连接所以创建一个账户并赋予权限

grant all on *.* to root@'%' identified by '密码'

创建所需的数据库或者使用远程工具连接创建一下也可以,我这里就一张表就不那么麻烦了

create database shop

 

在mysql/data目录下将sql脚本放入到里面去,因为前面做了目录挂载所以容器也会有这个脚本

 

use shop
 
source /var/lib/mysql/book.sql

查询表验证一下

没有问题退出后记得重启一下docker restart m1

三、创建Tomcat容器

为了切合我们的主题Nginx负载均衡,所以这里肯定不止创建一个tomcat容器,但是每次创建一个容器就需要手动启动项目太麻烦了,我们就手动创建一个镜像

vim Dockerfile

在Dockerfile文件下进行编辑 并指定数据库地址为m1

FROM openjdk
WORKDIR /project
COPY spring.jar /project
CMD java -jar spring.jar  --mysql.addr=m1

构建镜像

docker build  -t spring:v1.0 .

 镜像构建好了,接下来根据我们的镜像创建并启动容器

docker run -itd --name s1 --net net --ip 172.18.0.101 spring:v1.0
docker run -itd --name s2 --net net --ip 172.18.0.102 spring:v1.0
docker run -itd --name s3 --net net --ip 172.18.0.103 spring:v1.0

我们可以查看日志看是否启动成功

docker logs s1

我们可以测试一下看tomcat容器是否访问mysql容器

四、创建Nginx容器

首先我们需要一个nginx镜像

docker pull nginx

我们肯定是需要通过nginx负载均衡和动静分离的,但是容器内不能修改文件,所以我们继续使用目录挂载的形式

①创建nginx的配置文件目录并将配置文件放入

mkdir -p  /soft/nginx/conf.d

 注意:这里的服务器的集群和我们的Tomcat容器IP一致

#服务器的集群
upstream tomcatList {  
    server 172.18.0.101:8080 weight=1; 
    server 172.18.0.102:8080 weight=1; 
    server 172.18.0.103:8080 weight=1; 
} 

②同时将我们的静态文件放入

根据镜像创建容器

docker run -itd \
--name n1 \
-v /soft/nginx/conf.d:/etc/nginx/conf.d \
-v /soft/nginx/html:/etc/nginx/html \
-p 80:80 \
--net net \
--ip 172.18.0.105 \
nginx

现在我们访问一下看看,是可以进行访问的

但是这里还有一个小小的问题如果我们发送请求带有www.zkingedu.com就访问不了所以我们要加映射关系,找到C:\Windows\System32\drivers\etc\hosts添加映射关系

因为这里需要的是www.zkingedu.com,我们加的时候就写这个。

现在通过www.zkingedu.com也是可以访问的

 

至此根据nginx的动静分离项目就部署完了

请添加图片描述

到这里我的分享就结束了,欢迎到评论区探讨交流!!

💖如果觉得有用的话还请点个赞吧 💖

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1392755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenHarmony 应用开发入门 (一、环境搭建及第一个Hello World)

万事开头难。难在迈出第一步。心无旁骛,万事可破。没有人一开始就能想清楚,只有做起来,目标才会越来越清晰。--马克.扎克伯格 前言 2024年1月16日,华为目前开启已HarmonyOS NEXT开发者预览版Beta招募,报名周期为1月15…

【MATLAB】SVMD_LSTM神经网络时序预测算法

有意向获取代码,请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 SVMD-LSTM神经网络时序预测算法是一种结合了单变量经验模态分解(Singular Value Decomposition,SVD)和长短期记忆神经网络(LSTM&#xff09…

Three.js 学习笔记之模型(学习中1.17更新)

文章目录 模型 几何体 材质模型点模型Points - 用于显示点线模型Line | LineLoop | LineSegments网格模型mesh - 三角形 几何体BufferGeometry缓冲类型几何体BufferGeometry - 没有任何形状的空几何体创建几何体的方式BufferAttribute Types定义顶点法线 geometry.attributes…

感觉捡到宝了!这究竟是哪位大神出的神器?

你们在制作简历时,是不是基本只关注两件事:简历模板,还有基本信息的填写。 当你再次坐下来更新你的简历时,可能会发现自己不自觉地选择了那个“看起来最好看的模板”,填写基本信息,却没有深入思考如何使简历…

Java--业务场景:在Spring项目启动时加载Java枚举类到Redis中

文章目录 前言实现项目启动时加载枚举值到Redis1. 定义EnumInterface接口2. 创建EnumDTO3. 创建ClassUtils工具类4. 创建EnumService接口5. 创建EnumServiceImpl6. 修改枚举类7. 创建ApplicationInit 测试结果 前言 新的一年即将来到,回首2023年,也是学…

GEE中Landsat、Sentinel、Modis主要数据集区别

一、Landsat 1. Collection 1/2 的区别 Collection 2 是Landsat Level 1 数据的又一次重大再处理,显著提高了绝对地理定位精度。 Collection1Collection2时间跨度1972~2021底1972~至今数据等级level 1level1:1972~2021底 level2:1982~至今 …

MyBatisPlus学习笔记四-扩展功能

1、代码生成器 1.1、官方的1 1.3、官方的2-idea插件 1.3、非官方的-idea插件 2、静态工具 先查询,再分组 3、逻辑删除 4、枚举处理器 5、JSON处理器

ELK之Filebeat安装配置及日志抓取

一、Filebeat是什么 轻量型日志采集器 无论您是从安全设备、云、容器、主机还是 OT 进行数据收集,Filebeat 都将为您提供一种轻量型方法,用于转发和汇总日志与文件,让简单的事情不再繁杂。 Filebeat 随附可观测性和安全数据源模块,这些模块简化了常见格式的日志的收集、解…

Nsis打包Unity Exe文件(通用)

Nsi 脚本 !include "MUI2.nsh"#使用现代UI Unicode true #使用Unicode !define EXENAME "exeName" #定义常量 exe名称 !define SHORTCUT "快捷方式名称" #定义桌面快捷方式的中文名称Name ${EXENAME} #安装程序的title OutFile "${EXENAME…

银行数据仓库体系实践(1)--银行数据仓库简介

银行数据仓库简介 数据仓库之父比尔(Bill Inmon)在1991年出版的“Building the Data Warehouse”(《建立数据仓库》)一书中所提出的定义被广泛接受:数据仓库(Data Warehouse)是一个面向主题的&a…

如何使用Entity Framework查询Mysql数据库 并实现多表联查

简介 🍀通过依赖注入的方式,使用ORM工具Entity Framework查询Mysql数据库中的数据,并实现多表联查 假设我们有一个user用户表,其中occupationid对应的就是下面职业表中的id 职业表Occupations 现在我们需要查出用户的职业是什么…

隐秘而精湛:反射物镜用于激光烧蚀质谱系统

激光烧蚀电感耦合等离子体质谱技术 激光烧蚀电感耦合等离子体质谱 (LA-ICP-MS) 因其灵敏度和概念简单性而被认为是固体材料成分分析最通用的方法之一。自 1985 年 A. Gray 进行首次可行性研究以来,在仪器进步和智能调谐和校准策略概念的推动…

【IDEA相关问题】全局搜索快捷键ctrl+shift+f与win10输入法简繁体切换冲突

解决方案如下: 1. 打开Windows设置,选择【时间和语言】,接着选择【语言】 2. 选择中文(简体,中国)——【选项】 3. 找到【微软拼音】——【选项】 4. 选择【按键】进入下一步设置界面 5. 在按键设置里即可…

Github 2024-01-16 Python开源项目日报 Top10

根据Github Trendings的统计,今日(2024-01-16统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10HTML项目1 精心策划的Python资源列表 创建周期:3490 天开发语言:Python…

【LabVIEW FPGA入门】FPGA中的数学运算

数值控件选板上的大部分数学函数都支持整数或定点数据类型,但是需要请注意,避免使用乘法、除法、倒数、平方根等函数,此类函数比较占用FPGA资源,且如果使用的是定点数据或单精度浮点数据仅适用于FPGA终端。 1.整数运算 支持的数…

性能测试jmeter

参考up主 啥时当叫兽的个人空间-啥时当叫兽个人主页-哔哩哔哩视频 IMBA_RAILGUN的个人空间-IMBA_RAILGUN个人主页-哔哩哔哩视频 大丫头胖的个人空间-大丫头胖个人主页-哔哩哔哩视频 选的这些怎么添加 在一个列表里面 方法调用${__time(YMD)} 两个下划线,后跟函数…

Cpp多线程(一)

一、基本概念 1、程序是一段静态代码;进程是正在运行的程序;线程则是程序内部的执行路径。 上面这张图就解释了线程和多线程的意义。 2、若一个程序在同一时间执行多个线程,便是支持多线程的。一个进程中的多个线程共享相同的内存单元/内存…

MS2660:L1 频段卫星导航射频前端低噪声放大器芯片

MS2660 是一款具有高增益、低噪声系数的低噪声放 大器(LNA)芯片,支持 L1 频段多模式全球卫星定位,可 以应用于 GPS、北斗二代、伽利略、Glonass 等 GNSS 导航 接收机中。芯片采用先进工艺制造,封装采用 2 mm 2 mm …

【latex】参考文献排版前移,在最前面引用\usepackage{url}

【LaTeX】参考文献排版前移,在最前面引用\usepackage{url} 写在最前面完整解决步骤请教申申latex编译报错解决方案 写在最前面 参考文献从21开始排版前移了 解决方案:在最前面加一行 \usepackage{url}完整解决步骤 请教申申 申申yyds!&am…

HarmonyOS—构建第一个ArkTS应用(Stage模型)

创建ArkTS工程 构建第一个页面 若首次打开DevEco Studio,请点击Create Project创建工程。如果已经打开了一个工程,请在菜单栏选择File > New > Create Project来创建一个新工程。选择Application应用开发,选择模板“Empty Ability”&am…