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

一、Nginx介绍

        Nginx是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。它是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、简单的配置文件和低系统资源的消耗而闻名。

        Nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好。它可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,比如perl、php等,但是不支持java。Java程序只能通过与tomcat配合完成

Nginx优点

  1. 高并发连接:官方测试Nginx能够支撑5万并发连接,实际生产环境中可以支撑2~4万并发连接数。
  2. 配置文件简洁。
  3. 占用内存少。
  4. 内部有健康检查功能。
  5. 支持Rewrite重写:可根据不同的域名、URL将请求转发至后端不同的服务群。
  6. 支持热部署。
  7. 稳定性高。

此外,Nginx的主要功能包括正向代理反向代理负载均衡动静分离等。它可以作为正向代理进行上网等功能,同时也可以做反向代理,客户端对反向代理服务器是无感的,客户端访问反向代理服务器,反向代理服务器再将请求转发至目标服务器,只需要暴露代理服务器的地址即可,隐藏了真实的服务器地址,降低原来单个服务器的压力。

二、容器创建

1、MySQL容器

Ⅰ、创建容器

创建MySQL目录

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

用于存放数据

在对应的位置放置对应的my.cnf文件。

my.cnf

[client]
default-character-set=utf8[mysql]
default-character-set=utf8[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pidinit_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# default: sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# modeified: 
sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=10M
default-time_zone='+8:00'
default_authentication_plugin=mysql_native_password

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

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

modes:网络名称

172.18.0.0:指定IP地址

创建MySQL容器,指定我们的网络名称modes。

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 modes \
--ip 172.18.0.11 \
-d mysql/mysql-server:5.7

进入MySQL容器进行登录

m1:容器名

docker exec -it m1 bash

登录,输入我们设置好的密码:123456

mysql -uroot -p

进行授权设置密码

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

Ⅱ、应用

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

create database shop;  

shop为创建数据库

使用数据库:

use shop;

在对应的目录里面放入我们的数据脚本

执行脚本,等待执行完成。

source /var/lib/mysql/book.sql

查看数据表:

show tables;

之后退出:

exit;

退出后需要重启容器:

docker restart m1

2、创建tomcat容器

要使用Nginx负载均衡,就不只是一个容器,所以可以创建一个镜像来创建tomcat容器

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

命令:

vim Dockerfile

进行以下编辑:

#1.指定基础镜像,并且必须是第一条指令FROM openjdk#2.指明该镜像的作者和其电子邮件MAINTAINER wfzldr "邮件.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。

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

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

删除:

docker rmi spring:v1

创建:

docker  build  -t spring:v1 .

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

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

 查看日志:

docker logs s1

我们就可以进行数据访问了

3、Nginx容器

Ⅰ、准备

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

mkdir -p  /soft/nginx/conf.d

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;}}

在这个项目中放入我们的项目文件

Ⅱ、创建容器

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

n1:容器

modes:自定义网络

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

在主机访问IP即可

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

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

相关文章

数据结构---栈(Stack)

一、基本概念 栈是一种线性数据结构 二、特点 栈是"后进先出(LIFO---Last In First Out)"的数据结构(盘子的叠放:当服务员将新的盘子放在餐桌上时,他们通常会将盘子放在已有的盘子堆的顶部。当顾客用完盘子后,服务员会从堆顶取走…

PostgreSQL 100条命令

我会为您提供一些 PostgreSQL 中最常用的命令: 1. 创建数据库:CREATE DATABASE database_name; 2. 连接到数据库:\c database_name; 3. 创建表格:CREATE TABLE table_name (column1 datatype, column2 datatype, ...); 4. 插入数…

内网环境横向移动——利用windows服务

利用windows服务进行横向渗透主要是通过sc命令,但是注意这里跟之前windows远程命令相比多了一个条件,即当前主机需要为administrator权限。 sc命令 sc命令是XP系统中功能强大的DOS命令,SC命令能与“服务控制器”和已安装设备进行通讯。SC是用于与服务控…

SDCMS靶场通过

考察核心:MIME类型检测文件内容敏感语句检测 这个挺搞的,一开始一直以为检查文件后缀名的,每次上传都失败,上传的多了才发现某些后缀名改成php也可通过,png图片文件只把后缀名改成php也可以通过,之前不成功…

uniapp组件库Popup 弹出层 的使用方法

目录 #平台差异说明 #基本使用 #设置弹出层的方向 #设置弹出层的圆角 #控制弹窗的宽度 | 高度 #内容局部滚动 #API #Props #Event 弹出层容器,用于展示弹窗、信息提示等内容,支持上、下、左、右和中部弹出。组件只提供容器,内部内容…

CSS:backdrop-filter实现毛玻璃的效果

实现效果 实现代码 /* 关键属性 */ background-color: rgba(255, 255, 255, 0.4); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);完整代码 <style>/* 遮罩层 */.mo-mask {position: fixed;top: 0;bottom: 0;left: 0;right: 0;width: 100%;height…

【排序算法】五、冒泡排序(C/C++)

「前言」文章内容是排序算法之冒泡排序的讲解。&#xff08;所有文章已经分类好&#xff0c;放心食用&#xff09; 「归属专栏」排序算法 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 冒泡排序1.1 原理1.2 代码实现&#xff08;C/C&#xff09;1.3 特性总结 冒泡排序 1.1…

WorkPlus AI助理私有化部署,助力企业降本增效

在当今数字化时代&#xff0c;提供卓越的客户服务成为了企业成功的重要因素。而AI智能客服技术的兴起&#xff0c;则成为了实现高效、快捷客户服务的利器。作为一款领先的AI助理解决方案&#xff0c;WorkPlus AI助理能够私有化部署&#xff0c;为企业打造私有知识库&#xff0c…

WorkPlus Meet私有化视频会议软件-构建安全高效的内网会议体验

在企业内部&#xff0c;高效的会议协作是推动团队协同和工作效率的关键。而内网会议系统成为了构建安全高效的内部会议体验的必要工具。作为一家领先的内网会议系统&#xff0c;WorkPlus Meet以其卓越的性能和智能化的功能&#xff0c;助力企业实现高效安全的内部会议体验。 为…

爬山算法优化遗传算法优化极限学习机的多分类预测,p-ga-elm多分类预测

目录 背影 极限学习机 爬山算法优化遗传算法优化极限学习机的多分类预测,p-ga-elm多分类预测 主要参数 MATLAB代码 效果图 结果分析 展望 完整代码下载链接:爬山算法优化遗传算法优化极限学习机的多分类预测,p-ga-elm多分类预测(代码完整,数据)资源-CSDN文库 https://d…

django邮件通知功能-

需求&#xff1a; 1&#xff1a;下单人员下订单时需要向组长和投流手发送邮件通知 2&#xff1a;为何使用邮件通知功能&#xff1f;因为没钱去开通短信通知功能 设计 1&#xff1a;给用户信息表添加2个字段 第一个字段为&#xff1a;是否开通邮件通知的布尔值 第二个字段为: 用…

react15与react16的本质区别

React 15 和 React 16 在架构和一些核心特性上存在本质性的区别。 1.Reconciliation&#xff08;协调&#xff09;算法&#xff1a; React 15: React 15 使用了递归的协调算法&#xff0c;即采用深度优先遍历整个组件树来协调更新。这种方式在处理大型组件树或深度嵌套组件时…

面试官:如何实现三栏布局,中间自适应

今天聊点简单的&#xff0c;最近在整理面试题的时候&#xff0c;看到css部分&#xff0c;感觉自己有段时间没有切页面了&#xff0c;正好趁着这个机会好好复习一下&#xff0c;加深一下印象。 如何实现三栏布局 中间自适应&#xff1f;这也是在前端面试官经常会问到的&#xf…

unity 利用Graphics.Blit来制作图片效果

c# 的代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI;public class GraphicsBlitTest : MonoBehaviour {public Texture2D source;//原纹理public Material material;//效果材质public RawImage rawImage;// Sta…

前端实现轮训和长连接

简介 轮训和长连接相关内容可以参考之前的文章消息推送系统。消息推送系统-CSDN博客文章浏览阅读106次。在餐饮行业中&#xff0c;店内应用有pos、厨显屏等&#xff0c;云端应用为对应数据中心。为了实现云端数据和操作指令下发到店内应用&#xff0c;需要有一个系统实现这个功…

【手写数据库toadb】01 开发数据库内核准备阶段-开发环境准备

开发环境 ​专栏内容: 手写数据库toadb 本专栏主要介绍如何从零开发,开发的步骤,以及开发过程中的涉及的原理,遇到的问题等,让大家能跟上并且可以一起开发,让每个需要的人成为参与者。 本专栏会定期更新,对应的代码也会定期更新,每个阶段的代码会打上tag,方便阶段学习…

配置DNS主从服务器,实现真反向解析

主服务器 [rootbogon ~]# systemctl stop firewalld.service #关闭防火墙 [rootbogon ~]# setenforce 0 #关闭selinux [rootbogon ~]# systemctl restart named #启动dns服务 [rootbogon ~]# vim /etc/named.conf #进入dns配置文件 options {#监听…

udp丢包处理方法

UDP丢包处理方法如下1&#xff1a; 使用前向纠错码&#xff08;FEC&#xff09;技术。通过在发送端添加冗余信息&#xff0c;使接收端能够在收到部分丢失的数据时进行纠错。 使用前向纠错码&#xff08;FEC&#xff09;技术是一种有效的处理UDP丢包的方法。FEC技术通过在发送…

【ARM 嵌入式 编译系列 2.4 -- GCC 编译参数学习 -Wl,--gc-sections 】

请阅读【嵌入式开发学习必备专栏 之 ARM GCC 编译专栏】 文章目录 概述-Wl 选项例子&#xff1a; --gc-sections --gc-sections例子&#xff1a; -Wshadow例子&#xff1a; -Wlogical-op例子&#xff1a; -Waggregate-return例子&#xff1a; -Wfloat-equal例子&#xff1a; -W…

2023年12月 电子学会 青少年软件编程等级考试Scratch三级真题

202312 青少年软件编程等级考试Scratch三级真题 一、单项题 第 1 题 运行左图程序&#xff0c;想得到右图中的效果&#xff0c;红色框应填写的数值是&#xff1f;&#xff08; &#xff09; A&#xff1a;12 B&#xff1a;11 C&#xff1a;10 D&#xff1a;9 第 2 题 下列…