【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用

这篇具有很好参考价值的文章主要介绍了【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、概述

1. Nginx介绍

2. Nginx优势

3. Nginx的工作原理

二、容器创建

1. Mysql容器

2. Tomcat容器

3. Nginx容器

每篇一获


一、概述

1. Nginx介绍

Nginx(发音为 "engine x")是一个开源的、高性能的 HTTP 服务器和反向代理服务器。它也可以作为一个 IMAP/POP3/SMTP 代理服务器。Nginx 是由 Igor Sysoev 开发的,最初是为了解决 C10K 问题(即如何处理一万个并发连接的问题)。现在,Nginx 已经成为了一种非常流行的 Web 服务器软件。

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

以下是 Nginx 的一些主要特性:

  1. 处理静态文件、索引文件以及自动索引:Nginx 可以非常高效地处理静态文件,并支持索引文件和自动索引。

  2. 反向代理与负载均衡:Nginx 可以作为反向代理服务器,将来自客户端的请求转发到后端的服务器,并将后端服务器的响应返回给客户端。此外,Nginx 还支持多种负载均衡算法。

  3. FastCGI、uWSGI、SCGI、memcached 支持:Nginx 可以与这些常见的网络协议进行交互,以处理动态内容。

  4. SSL 和 TLS 支持:Nginx 支持 SSL 和 TLS 协议,可以为网站提供安全的 HTTPS 连接。

  5. 模块化设计:Nginx 有许多可选的模块,可以根据需要添加或删除,以满足特定的需求。

  6. 配置文件热部署:Nginx 支持在不中断服务的情况下更改配置文件并使其生效。

  7. 带宽控制:Nginx 允许限制连接和请求的速度,以防止带宽被过度使用。

2. Nginx优势

在 Linux 中使用 Nginx 部署项目有许多优势,以下是一些主要的:

  1. 高性能和高并发:Nginx 是一个高性能的反向代理服务器和邮件代理服务器。它可以处理大量的并发连接,这使得它在处理高流量的网站时表现出色。

  2. 稳定性:Nginx 在各种网络环境下都能提供稳定的服务。它的稳定性和可靠性使得许多大型网站选择使用它作为其主要的 Web 服务器。

  3. 灵活性:Nginx 提供了丰富的模块和功能,可以满足各种复杂的 Web 应用需求。例如,它可以作为负载均衡器,可以处理静态文件,也可以处理动态内容。

  4. 易于配置:Nginx 的配置文件结构清晰,易于理解和修改。这使得管理和维护 Nginx 服务器变得更加简单。

  5. 资源占用少:Nginx 在处理大量并发连接时,CPU 和内存的占用相对较少,这使得它在资源有限的环境中也能提供良好的性能。

  6. 开源和免费:Nginx 是开源的,这意味着您可以免费使用它,并且可以查看和修改其源代码。这为定制和优化 Nginx 提供了可能。

  7. 良好的社区支持:Nginx 有一个活跃的开发和用户社区,您可以从中获取帮助和支持,也可以分享您的经验和知识。

3. Nginx的工作原理

Nginx 的工作原理主要基于事件驱动和异步非阻塞的设计模型。这种设计使得 Nginx 能够在处理大量并发连接时,保持高效和稳定。以下是 Nginx 工作原理的一些关键点:

  1. Master-Worker 架构:Nginx 采用 Master-Worker 的架构模式。Master 进程主要负责读取和验证配置文件,管理 Worker 进程。Worker 进程则负责处理实际的请求。每个 Worker 进程都是独立的,它们之间不共享状态,也不进行直接的通信。

  2. 事件驱动:Nginx 的 Worker 进程是事件驱动的。当一个新的连接请求到来时,Worker 进程会接收到一个事件通知。然后,Worker 进程会处理这个请求,生成响应,并将响应发送回客户端。在这个过程中,Worker 进程不会被阻塞,可以同时处理多个请求。

  3. 异步非阻塞 I/O:Nginx 使用异步非阻塞的 I/O 操作。这意味着,当一个 Worker 进程在等待 I/O 操作完成时,它可以去处理其他的请求。这样,Worker 进程就不会因为等待 I/O 操作而被阻塞,可以更高效地利用 CPU。

  4. 负载均衡:Nginx 可以作为反向代理服务器,将来自客户端的请求分发到后端的服务器。Nginx 支持多种负载均衡算法,如轮询、最少连接、IP 哈希等。

  5. 静态内容处理:对于静态内容,Nginx 可以直接从文件系统中读取文件,并将文件内容作为响应发送给客户端。

  6. 动态内容处理:对于动态内容,Nginx 通常会与后端的应用服务器(如 PHP-FPM、uWSGI 等)配合使用。Nginx 将请求转发给应用服务器,由应用服务器生成动态内容,然后 Nginx 再将这些内容作为响应发送给客户端。

二、容器创建

1. Mysql容器

首先创建一个目录

命令:

mkdir -p /mode/mysql/{conf,data}  

在root中创建一个存放MySQL的文件夹mysql中有conf存放配置文件,

还在mysql中有data存放数据的。

在将配置文件从主机拖到conf文件中:

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

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

172.18.0.0为指定IP,其中mode为网络名称。

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

创建一个mysql容器并且为它指定我们的自定义网络(mode)

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

其中的ip需要跟上面创建的自定义网络前缀相同:172.18,在这之后可以修改,不可超过255

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

进入:

docker exec -it m1 bash

m1 是需要进入哪个容器的名称

登入mysql:

mysql -uroot -p

输入我们在创建是设置的密码即可登入,也就是123456

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

在进行用户的授权并且设置密码:

grant all on *.* to root@'%' identified by '123456';

其中root为用户名称,123456为用户的密码。

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

在MySQL创建我们所需要存放数据表的数据库

创建数据库:

create database shop;  

shop为创建数据库

使用创建号的数据库:

use shop;

在我们创建数据的data目录中存放sql脚本,将使用目录挂载后容器也会有这个脚本,在主机中将脚本拖入即可(/mode/mysql/data):

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

之后执行命令,将脚本在MySQL中执行,容器与虚拟机对应的目录:

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

执行命令:

source  /var/lib/mysql/book.sql;

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql 

查看数据表:

show tables;

之后退出:

exit;

退出后需要重启容器:

docker restart m1

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

2. Tomcat容器

我们需要达到Nginx负载均衡,就不只是一个容器,所以可以创建一个镜像来创建tomcat容器

编辑并且创建Dockerfile文件,用于创建镜像的配置

命令:

vim Dockerfile

进行以下编辑:

#1.指定基础镜像,并且必须是第一条指令
FROM  openjdk
#2.指明该镜像的作者和其电子邮件
MAINTAINER  CloudJun  "jun737x@163.com"
#3.在构建镜像时,指定镜像的工作目录,之后的命令都是基于此工作目录,如果不存在,则会创建目录
WORKDIR  /project
#4.将文件从Docker主机将jdk及jar包复制到Docker镜像中
COPY  spring.jar /project
#5.容器启动时,需要执行的命令(执行jar包)
CMD java -jar spring.jar --mysql.addr=m1

将名为spring.jar的配置IP配置为m1容器的IP

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql 

i 进行编辑 ,编辑完成按Esc,并且输入:wq进行保存并且退出。

有相同名称及版本的镜像可以进行删除或者创建不同名称及版本的镜像

删除:

docker rmi spring:v1

我这里是进行删除,之后再创建:

docker  build  -t spring:v1 .

 【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

根据我们创建的镜像来创建容器,并且分别配置不同的IP

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

这里创建了三个容器,分别是s1,s2,s3,IP分别:18.0.101,18.0.102,18.0.103

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql 

可以通过查看日志看是否启动成功

 查看日志:

docker logs s1

s1 为容器名称,需要查看哪个容器日志就修改为哪个容器即可

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

可以先进行访问,看是否可以访问到数据,在主机上进行数据访问:

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

3. Nginx容器

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

mkdir -p  /soft/nginx/conf.d

将配置文件放讲其中,通过目录挂载的方式进行到容器中去

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

default.conf:

#服务器的集群
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; 
} 
    
server {

    listen  80;
    server_name  www.zkingedu.com;

    location / {
        root   /etc/nginx/html/;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    
    location = /50x.html {
        root   /usr/share/nginx/html;
    }
    
    location ~^/api/ {
        rewrite ^/api/(.*)$ /$1 break;
        proxy_pass  http://tomcatList;
        proxy_redirect default;
    }

}

其中配置tomcat集群,将tomcat容器的IP集群,并且对应创建过的tomcat容器IP

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

在将这个项目中的静态文件放入其中

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

之后根据自定义的网络来创建nginx容器

命令:

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 mode \
--ip 172.18.0.104 \
nginx

n1 为容器名称,mode 为自定义网络

之后在主机只访问虚拟机的IP:

【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用,docker,linux,nginx,运维,mysql

每篇一获

在 Linux 中使用 Docker 安装 Nginx 并部署前后端分离的项目,您可能会有以下几个方面的收获:

  1. 掌握 Docker 的基本使用:Docker 是一种流行的容器技术,可以让开发者在一个隔离的环境中运行应用,避免了因为环境问题导致的“在我机器上可以运行”的问题。通过这个过程,您可能已经学会了如何使用 Docker 来创建和管理容器。

  2. 理解容器化的优势:与传统的虚拟机相比,容器有许多优势,例如启动快、资源占用少、易于迁移等。通过实际使用 Docker,您可能对这些优势有了更深入的理解。

  3. 熟悉 Nginx 的配置和使用:Nginx 是一个强大的 Web 服务器和反向代理服务器,通过在 Docker 中部署 Nginx,您可能已经熟悉了 Nginx 的配置和使用。

  4. 了解前后端分离的部署方式:前后端分离是现代 Web 开发的一种常见架构,通过在 Docker 中部署前后端分离的项目,您可能对这种部署方式有了更深入的理解。

  5. 提升 Linux 操作技能:在 Linux 中使用 Docker 和 Nginx,无疑会让您对 Linux 的命令行操作更加熟练,这对于任何想要深入了解和使用 Linux 的人来说都是非常有价值的技能。文章来源地址https://www.toymoban.com/news/detail-813145.html

到了这里,关于【Docker】Linux中使用Docker安装Nginx部署前后端分离项目应用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Docker】docker部署springboot+vue+mysql+nginx前后端分离项目【部署实战篇】

    安装docker: https://blog.csdn.net/qq_39900031/article/details/121666892 springboot-vue前后端分离项目:https://gitee.com/ma-haojie/springboot-vue-demo.git https://jackwei.blog.csdn.net/article/details/110227719 或者 --restart=always 参数能够使我们 在重启docker时,自动启动相关容器 。 Docker容器的重启策略如下: no,默认

    2024年02月13日
    浏览(42)
  • Linux-----nginx的简介,nginx搭载负载均衡以及nginx部署前后端分离项目

    目录 nginx的简介 是什么 nginx的特点以及功能 Nginx负载均衡 下载  安装  负载均衡 Nginx 是一个高性能的开源Web服务器和反向代理服务器。它的设计目标是为了解决C10k问题,即在同一时间内支持上万个并发连接。 Nginx采用事件驱动的异步架构,能够高效地处理大量并发请求,同

    2024年02月06日
    浏览(38)
  • 前后端分离项目(gin+gorm+vue3)腾讯云部署详细教程(Xshell安装及使用,go,mysql,nginx安装及配置)

    1. 购买服务器 进入腾讯云官网点击最新活动,进入云+校园专区,我购买的是第一个 购买完成后,进入控制台,云产品选择轻量应用服务器,即可查看到自己的服务器,记住自己的公网IP 2. 重置密码 点击进入服务器详情,初次使用需重置密码 点击重置密码按提示操作即可,

    2024年02月06日
    浏览(58)
  • Linux/openEuler系统部署spring boot+vue前后端分离项目(nginx均衡代理)

    可以看我前面的文章 华为openEuler系统安装openjdk并配置环境变量 openEuler系统安装nginx HUAWEI-OpenEuler系统安装MySQL服务器并使用详细步骤 Ubuntu安装MySQL服务器详细步骤 在确定项目可以正常运行的前提下,进行package打出jar包 npm run build 打包成功后在项目文件路径下出现dist文件夹

    2024年03月24日
    浏览(84)
  • Java——Linux使用Docker部署若依前后端分离版【保姆级教程】

    目录 一、项目规划与前置工作 1.1、docker所需镜像 1.2、使用工具  1.3、防火墙与安全组的配置  1.4、域名解析、备案、SSL证书的准备(可选) 二、Docker和镜像安装 2.1、Docker安装 2.1.1、检查环境 2.1.2、搭建gcc环境(gcc是编程语言译器) 2.1.3、安装需要的软件包 2.1.4、装镜像仓

    2024年02月02日
    浏览(60)
  • Nginx同一端口部署多个前后端分离的vue项目

    要用nginx容器部署多个前端项目可以采用监听端口,和基于location配置两种方法, 我的nginx是使用docker部署的,启动的时候没有开多余的端口,所以采用location配置 一个server下根据根路径不同分别代理访问不同项目。 下面操练起来,问:把大象放冰箱?总共需要几步:三步!

    2024年02月02日
    浏览(37)
  • 04.使用 github actions+docker 自动部署前后端分离项目 zhontai (.net core+vue)

    Github Actions是什么?是 GitHub 提供的一种持续集成/持续部署(CI/CD)工作流程自动化服务,助力项目的自动化构建、测试和部署。 依托于平台,本文将分享使用 GitHub Actions 完成对一个.Net Core+Vue 的前后端分离项目 zhontai 的构建,并使用 docker 部署到云服务器(阿里云) 经过一番尝

    2024年02月11日
    浏览(53)
  • 若依前后端分离项目docker部署

    1.centos 7 2.docker 3.mysql5.x 8.x 4.redis 5.nginx 前往 Gitee 下载页面(https://gitee.com/y_project/RuoYi-Vue (opens new window))下载解压到工作目录 3.1 后端 1.下载代码到本地后,解压完成,用idea打开项目 2.创建数据库:ry-vue 3.在创建好数据库后,运行以下两个sql文件生成数据表(quartz.sql、ry_202208

    2024年02月05日
    浏览(38)
  • Unbutu系统-Docker安装、JDK环境配置,Docker常用指令、Docker安装MySQL、Redis、Tomcat、Nginx,前端后分离项目部署

    目录 1、防火墙 1.1、查看防火墙状态 1.2、开启防火墙 1.3、关闭防火墙 1.4、重启防火墙 1.5、查看防火墙版本 2、安装JDK 2.1、官网下载tar包 2.3、解压tar.gz文件 2.4、配置环境变量 2.4.1、查看安装路径 2.4.2、设置环境变量 2.4.3、执行该让环境变量生效 2.4.4、查看JDK版本 3、Docker

    2024年02月04日
    浏览(47)
  • Windows服务器,通过Nginx部署VUE+Django前后端分离项目

    基本说明 安装 Nginx 部署 VUE 前端 部署 Django 后端 Django admin 静态文件(CSS,JS等)丢失的问题 总结 本文介绍了在 windows 服务器下,通过 Nginx 部署 VUE + Django 前后端分离项目。本项目前端运行在 80 端口,服务器端运行在 8000 端口。因此本项目使用 Django 的 runserver 命令进行部署

    2024年02月05日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包