欢迎来到我的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 bashmysql -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 openjdkWORKDIR /projectCOPY spring.jar /projectCMD 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.0docker run -itd --name s2 --net net --ip 172.18.0.102 spring:v1.0docker 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的动静分离项目就部署完了

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

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