使用docker容器部署考试系统

8.30

回顾

1、使用harbor仓库

python --version

yum -y update

yum -y install python2-pip

部署考试系统

使用docker部署project-exam-system

1、在一台主机内,实现容器的编排看,发布考试系统

2、环境准备

docker

docker-compose

docker脚本
[root@docker001 ~]# vim docker.sh
cat << EOF | tee /etc/modules-load.d/k8s.conf 
overlay
br_netfilter
EOFmodprobe overlaymodprobe br_netfiltercat << EOF | tee /etc/sysctl.d/k8s.conf
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward = 1
EOFsysctl --systemyum install -y yum-utils device-mapper-persistent-data lvm2yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repoyum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y# 运行docker脚本
[root@docker001 ~]# source docker.sh 

修改配置文件

[root@docker001 ~]# vim /etc/docker/daemon.json{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"]
}
[root@docker001 ~]# vim /usr/lib/systemd/system/docker.service 
13	ExecStart=/usr/bin/dockerd
[root@docker001 ~]# systemctl daemon-reload

重启服务

[root@docker001 ~]# systemctl restart docker

3、普通的部署

镜像

拉取nginx镜像
[root@docker001 ~]# docker pull nginx
查看镜像
[root@docker001 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    5ef79149e0ec   2 weeks ago   188MB
创建容器
# 创建容器
[root@docker001 ~]# docker run -itd -p80:80 nginx:latest 
db8ffd17378657990222bb65accff54631c41e9251c844f1f95c8b66d44a0c7a# 查看创建的容器
[root@docker001 ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                               NAMES
db8ffd173786   nginx:latest   "/docker-entrypoint.…"   26 seconds ago   Up 25 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   upbeat_stonebraker# 访问测试
[root@docker001 ~]# curl localhost
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html># 使用exec命令查看容器nginx中的/usr/share/nginx/html目录
[root@docker001 ~]# docker exec -it db8 ls /usr/share/nginx/html
50x.html  index.html

--前端:nginx latest服务

创建一个目录,不单独放置前端的资料,将后端的所有资料也都放在这里

创建目录
[root@docker001 ~]# mkdir project_exam_system
[root@docker001 ~]# cd project_exam_system/
[root@docker001 project_exam_system]# mkdir web
[root@docker001 project_exam_system]# cd web/
[root@docker001 web]# rz -E
rz waiting to receive.将dist文件放到web目录下
# 解压dist.zip包
[root@docker001 web]# unzip dist.zip# 查看解压后的文件
[root@docker001 web]# ls
dist  dist.zip# 删除dist.zip包
[root@docker001 web]# rm -rf dist.zip # 只需要留下解压后的dist文件
[root@docker001 web]# ls
dist#查看内容
[root@docker001 web]# cd ..
[root@docker001 project_exam_system]# ls web/dist/
assets  favicon.ico  index.html删除测试nginx页面所创建容器
# 停止db8容器的运行
[root@docker001 project_exam_system]# docker stop db8
db8# 删除容器
[root@docker001 project_exam_system]# docker rm db8
db8#创建容器,映射端口,挂载目录
[root@docker001 web]# docker run -itd -p80:80 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest
11568e4a88646ea4b1cb9243678fe220ae263ea70591441f093dd72a7f4660a8

查看所创建的容器

[root@docker001 web]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                       NAMES
11568e4a8864   nginx:latest   "/docker-entrypoint.…"   29 seconds ago   Up 28 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp           vibrant_gates

修改hosts文件

-在物理机的C:\Windows\System32\drivers\etc中找到hosts文件,添加IP地址和域名

--测试

--上传前端项目dist

--创建启动容器

[root@d3 project_exam_system]# docker run -itd -p80:80 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest5b4ca7741c21ecffe34e13e3b7c6da3e9fb7901bb68b3bab7c470ee83b0ca91b[root@d3 project_exam_system]# docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES5b4ca7741c21 nginx:latest "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp wonderful_hertz

浏览器访问测试

在实现登录的时候,出现问题,因为后端还没有部署

登录的时候

-后端的业务 springboot 不用单独部署tomcat,已经在springboot中内置

-数据持久化业务 mysql5.7

关于后端

#拉取cnetos镜像
[root@docker001 ~]# docker pull centos
#拖包
#将软件包jdk-17_linux-x64_bin.tar.gz 和软件包project_exam_system.zip拖到root下
[root@docker001 ~]# ls
anaconda-ks.cfg  docker.sh  jdk-17_linux-x64_bin.tar.gz  project_exam_system.zip
#解压
解压project_exam_system.zip软件包
[root@docker001 ~]# unzip project_exam_system.zip 
Archive:  project_exam_system.zip# 查看解压包后的文件
[root@docker001 ~]# ls
anaconda-ks.cfg         docker.sh                    Project_ExamSystem-V1.0.0.war
application.properties  jdk-17_linux-x64_bin.tar.gz  project_exam_system.zip
dist                    project_exam_system.sql#创建容器
# 使用centos镜像创建容器
[root@docker001 ~]# docker run -itd centos:latest /bin/bash
d107d28c1503012c6f9aa43d09c94d64f439c60de61d2c3c2d4d565690fdca0f# 查看创建的容器
[root@docker001 ~]# docker ps
CONTAINER ID   IMAGE           COMMAND                   CREATED          STATUS          PORTS                               NAMES
d107d28c1503   centos:latest   "/bin/bash"               12 seconds ago   Up 11 seconds                                       quirky_chandrasekhar
11568e4a8864   nginx:latest    "/docker-entrypoint.…"   2 minutes ago    Up 2 minutes    0.0.0.0:80->80/tcp, :::80->80/tcp   vibrant_gates# 将宿主机的jdk包复制到容器中
[root@docker001 ~]# docker cp jdk-17_linux-x64_bin.tar.gz d107:/
Successfully copied 183MB to d107:/# 将宿主机的Project包复制到容器中
[root@docker001 ~]# docker cp Project_ExamSystem-V1.0.0.war d107:/
Successfully copied 41MB to d107:/# 将宿主机的application文件复制到容器中
[root@docker001 ~]# docker cp application.properties d107:/
Successfully copied 4.1kB to d107:/#挂载容器终端
[root@docker001 ~]# docker attach d107

查看容器中是否有软件包

[root@d107d28c1503 /]# ls
Project_ExamSystem-V1.0.0.war  home			    media  run	 usr
application.properties	       jdk-17_linux-x64_bin.tar.gz  mnt    sbin  var
bin			       lib			    opt    srv
dev			       lib64			    proc   sys
etc			       lost+found		    root   tmp
# 在容器中创建目录
[root@d107d28c1503 /]# mkdir /usr/local/jdk# 解压软件包到指定目录,并且跳过第一层目录
[root@d107d28c1503 /]# tar -zxf jdk-17_linux-x64_bin.tar.gz -C /usr/local/jdk/ --strip-components=1[root@d107d28c1503 /]# ls /usr/local/jdk/
LICENSE  README  bin  conf  include  jmods  legal  lib	man  release

修改application.properties文件

[root@d107d28c1503 /]# vi application.properties 
spring.datasource.url=jdbc:mysql://192.168.2.60:3306/project_exam_system

在容器中运行,且访问验证

[root@d107d28c1503 /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war.   ____          _            __ _ _/\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \\\/  ___)| |_)| | | | | || (_| |  ) ) ) )'  |____| .__|_| |_|_| |_\__, | / / / /=========|_|==============|___/=/_/_/_/:: Spring Boot ::                (v3.3.2)...
...
[root@docker001 ~]# curl 173.17.0.3:8080{"code":20002,"msg":"账号不存在或密码错误"}[root@docker001 ~]# 

创建java镜像

[root@docker001 ~]# docker commit d107 java:v0
sha256:64b4ea040bff2b7d3476273d62a5ae235fabe90e495ea81c6ac4efc6e33f2fd3# 查看创建的java镜像
[root@docker001 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
java         v0        64b4ea040bff   10 seconds ago   774MB
<none>       <none>    22eb536c0d76   54 minutes ago   774MB
nginx        latest    5ef79149e0ec   2 weeks ago      188MB
centos       latest    5d0da3dc9764   2 years ago      231MB
[root@docker001 ~]# docker ps
CONTAINER ID   IMAGE           COMMAND                   CREATED          STATUS          PORTS                               NAMES
d107d28c1503   centos:latest   "/bin/bash"               14 minutes ago   Up 14 minutes                                       quirky_chandrasekhar
11568e4a8864   nginx:latest    "/docker-entrypoint.…"   17 minutes ago   Up 17 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   vibrant_gates

删除centos创建的容器

# 停止容器
[root@docker001 ~]# docker stop d107
d107# 删除容器
[root@docker001 ~]# docker rm d107
d107

用java镜像创建容器

[root@docker001 ~]# docker run -itd -p8080:8080 java:v0
464d9b2b5f0b4a0cb80ac134128130393f67f7d0bf37c84763cdbf5a29015c1f

运行

# 挂载创建的容器的终端
[root@docker001 ~]# docker attach 464d# 运行
[root@464d9b2b5f0b /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war

访问测试,出现200,500即可

数据库持久化-5.7.44

拉取mysql镜像

[root@docker001 ~]# docker pull mysql:5.7.44

创建

# 使用mysql镜像创建端口号为3306,用户和密码为root的容器
[root@docker001 ~]# docker run -itd -e MYSQL_ROOT_PASSWORD=root -p3306:3306 mysql:5.7.44 
1a07feb046ee3038c2364c5b655ff4cfd31acf28db5e747810fc42b05195338d# 查看创建的容器
[root@docker001 ~]# docker ps 
CONTAINER ID   IMAGE          COMMAND                   CREATED              STATUS              PORTS                                                  NAMES
1a07feb046ee   mysql:5.7.44   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   optimistic_herschel
464d9b2b5f0b   java:v0        "/bin/bash"               2 hours ago          Up About an hour    0.0.0.0:8080->8080/tcp, :::8080->8080/tcp              epic_pascal
11568e4a8864   nginx:latest   "/docker-entrypoint.…"   3 hours ago          Up About an hour    0.0.0.0:80->80/tcp, :::80->80/tcp                      vibrant_gates
在project_exam_system/目录下创建mysql目录
[root@docker001 ~]# mkdir mysql
[root@docker001 ~]# mv mysql project_exam_system/
[root@docker001 ~]# ls project_exam_system/

远程登录执行sql文件

完成之后,登录mysql

[root@docker001 ~]# docker exec -it 1a mysql -uroot -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.7.44 MySQL Community Server (GPL)Copyright (c) 2000, 2023, Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.# 查看数据库
mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| mysql               |
| performance_schema  |
| project_exam_system |
| sys                 |
+---------------------+
5 rows in set (0.00 sec)# 创建和java项目中的用户
mysql> create user 'zhangmin'@'%' identified by 'zhangmin';
Query OK, 0 rows affected (0.00 sec)# 给创建的用户所有的权限
mysql> grant all on *.* to 'zhangmin'@'%';
Query OK, 0 rows affected (0.00 sec)# 刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)mysql> 

再登录,输入用户名和密码,可以进入考试系统

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

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

相关文章

C语言实现SHA-256算法校验文件(win32-API)

一、前言 在数字化时代&#xff0c;信息安全与数据完整性成为了不可忽视的关键议题。在众多保障数据完整性的方法中&#xff0c;散列函数扮演着至关重要的角色。SHA-256&#xff08;Secure Hash Algorithm 256&#xff09;作为一种先进的散列算法&#xff0c;以其高度的安全性…

VScode + Python 下载及安装|python环境配置|中文乱码解决

1&#xff0c;下载安装VScode 直接点击2024.9https://vscode.download.prss.microsoft.com/dbazure/download/stable/fee1edb8d6d72a0ddff41e5f71a671c23ed924b9/VSCodeUserSetup-x64-1.92.2.exe 或者百度搜索VScode&#xff0c;可下载安装最新版 点击后等一下&#xff0c;就…

逆向工程核心原理 Chapter 21 | Windows消息钩取

开始DLL注入章节的学习。 知识点学习 消息钩子 这里主要是要弄明白Windows GUI程序的工作模式/流程。 GUI以事件驱动方式工作。核心概念&#xff1a;message queue 最具代表性的&#xff1a;MS提供的spy SetWindowsHookEX() SetWindowsHookExA 函数 (winuser.h) - Win32 a…

网易易盾携手雷斧科技,打造公平竞技环境

这是一个充满复古像素风格的游戏世界&#xff0c;玩家们控制着自己的像素角色&#xff0c;手持着各种像素化武器&#xff0c;时而酣畅对战&#xff0c;时而自由创作地图、武器和皮肤。 《像素射击》是由雷斧科技开发的一款集生存、对战、沙盒创造于一体的像素风格的3D多人在线…

极狐GitLab 17.3 重点功能解读

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;可以私有化部署&#xff0c;对中文的支持非常友好&#xff0c;是专为中国程序员和企业推出的企业级一体化 DevOps 平台&#xff0c;一键就能安装成功。安装详情可以查看官网指南。 极狐GitLab 17.3 正式发布了多项与敏捷项目管…

ecmascript和javascript的区别

ECMAScript ECMAScript&#xff08;通常缩写为ES&#xff09;是JavaScript的规范&#xff0c;由Ecma International组织制定和维护。ECMAScript是一种脚本语言标准&#xff0c;主要用于Web应用程序开发&#xff0c;但也适用于其他类型的应用程序&#xff0c;如桌面和移动应用程…

相亲交友小程序开发功能分析

相亲交友小程序的开发功能分析可以从用户端和管理后台两个主要方面来进行。 用户端功能 注册与登录&#xff1a; 用户可以通过手机号、微信号或其他第三方平台进行注册登录&#xff0c;简化注册流程。 实名认证&#xff1a; 引入实名认证机制&#xff0c;确保用户信息的真实…

Java 技术教程:@JsonInclude(JsonInclude.Include.NON_EMPTY) 注解详解

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…

C语言连接MySql(vs2022、Vc++6.0、DevC++)

本文c&#xff08;OraOla编写&#xff09;与Java(Wideskyzz编写) 由于csdn的排版太垃圾了&#xff0c;所以可以直接看资料 上传资料也麻烦&#xff0c;所以可直接访问我的gitee C语言连接MySql: C语言&#xff08;vs2022、Vc6.0、DevC&#xff09;连接MySqlhttps://gitee.co…

Python检测和识别车牌-python经典练手项目

车牌检测与识别技术用途广泛&#xff0c;可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计算机视觉和人工智能。 本文将使用Python创建一个车牌检测和识别程序。该程序对输入图像进行处理&#xff0c;检测和识别车牌&#xff0c;最后显示车牌字符&#xff0c;作为…

OceanBase 的ODP OBproxy 的记录

OceanBase 的ODP的路由说明一、简述为什么使用ODP的原因 &#xff08;强一致性情况下&#xff09; 1.分布式数据库在SQL解析这块存在本地执行计划&#xff0c;远程执行计划&#xff0c;分布式执行计划。 本地执行计划&#xff1a;整个SQL的表都在session所在的Observer 节点上。…

数据结构代码集训day14(适合考研、自学、期末和专升本)

题目均来自b站up&#xff1a;白话拆解数据结构&#xff01; 今日题目如下&#xff1a;&#xff08;1&#xff09;试写一个算法判断给定字符序列是否是回文。 &#xff08;2&#xff09;给定一个算法判断输入的表达式中括号是否匹配。假设只有花、中、尖三种括号。 题1 回文序列…

教学能力知识

第一章课程理论知识 一、课程理念 二、课程目标 1.核心素养 2.课程总目标 三、教学建议 四、教学环节 第二章教学实施 第一节导入新课类 二.导入方法 第二节教学方法类 教学方法的选择依据 第三节教法实施原则类 设计意图 第四节设计意图类 1.教学目标 2.教学重难点 3.教学…

【Linux】:用户缓冲区

1.前言&#xff08;引出现象&#xff09; 我们看一段代码&#xff0c; 我们运行这段代码&#xff0c; 再次运行&#xff0c;并将打印结果重定向到文件log.txt中&#xff0c; 结果除了系统调用write的输出&#xff0c;其余输出都多打印一次。这是为什么呢&#xff1f;我们先…

《花100块做个摸鱼小网站! 》第五篇—通过xxl-job定时获取热搜数据

⭐️基础链接导航⭐️ 服务器 → ☁️ 阿里云活动地址 看样例 → &#x1f41f; 摸鱼小网站地址 学代码 → &#x1f4bb; 源码库地址 一、前言 我们已经成功实现了一个完整的热搜组件&#xff0c;从后端到前端&#xff0c;构建了这个小网站的核心功能。接下来&#xff0c;我们…

029、架构_高可用_水位和分组

GoldenDB分组技术 GoldenDB灵活智能的数据可用性策略名称是gTank。包含了分组技术和高低水位两个技术点。在分布式一主多备架构下,全节点的数据同步,耗时长、用户体验差。因此GoldenDB采用分组技术,将数据节点和事务节点GTM实现分组管理,实现业务的灵活配置。 数据节点集群…

基于 OpenCV 的数字图像处理实验平台设计

基于 OpenCV 的数字图像处理实验平台设计 前言简介正文资源链接&#xff08;含源码&#xff09; 前言 哈哈上学那会儿做的一个软件&#xff0c;当时把OpenCV各个基础算法都集成在了一起&#xff0c;还有一定程度的顺序执行部分相关算法的功能&#xff0c;那时候网上相关内容比较…

/单元测试

承接上文 统一异常处理&#xff0c;封装结果-CSDN博客 ******************************************** 登录业务 Service public class EmployeeServiceImpl extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService {Resourceprivate JwtUtils j…

jQuery入门(六)jQuery实现瀑布流分页案例

一、瀑布流分页案例分析 1.1) 功能分析&#xff1a; 鼠标下拉&#xff0c;加载分页数据(10条) &#xff0c;如下图&#xff1a; 案例分析&#xff1a; 1.2) 如何确定当前显示的数据已经浏览完毕&#xff1f; 公式&#xff1a;(滚动条距底部的距离 滚动条上下滚动的距离 当…

Echarts中国地图省市区县三级联动

NodeV14.20.0安装 # 历史版本Node下载地址 https://nodejs.org/en/download/prebuilt-installer# NodeV14.20.0配置与部署 https://nodejs.org/dist/v14.20.0/node-v14.20.0-x64.msi构建默认Vue3工程目录 npm install -g vue/cli --registryhttps://registry.npm.taobao.org …