使用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.mzph.cn/pingmian/52946.shtml

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

相关文章

【Next】2. 项目构建

打开 Next.js 的官方文档&#xff1a;https://nextjs.org/docs/getting-started/installation&#xff08;国内文档不够新&#xff09; Next.js 版本 14.2 &#xff0c; Node.js 的版本要求必须 > 18.18。 Next 有两种开发模式&#xff0c;下面讲新的 APP Router。 创建项…

【R语言】基于Biomod2集成平台探究物种分布区的构建流程(SDMs)(持续更新中。。。。。。)

Species Distribution Models 1.写在前面2.物种分布模型介绍3.输入数据准备及预处理3.1.如何从GBIF网站上获取分布点数据&#xff08;基于rgbif包&#xff09;3.2.分布点稀疏处理&#xff08;基于spThin函数&#xff09;3.3.如何获取环境变量数据&#xff08;基于getData函数&a…

创建一个Spring MVC项目(配置,导入依赖,以及前端控制器)

Tomcat&#xff08;10.1.28&#xff09;配置 详细讲解&#xff01; 链接https://blog.csdn.net/or77iu_N/article/details/141266535?spm1001.2014.3001.5502 1、创建 Java Web 项目 File -> New -> Project 2、导入 Spring MVC 相关依赖 <dependency> <gro…

汽车乘客热舒适度大挑战,如何利用仿真技术提高汽车环境舒适度

舒适性在人们选择汽车的决定性方面占比越来越重&#xff0c;而汽车乘员舱环境的舒适性是指为乘员提供舒适愉快便利的乘坐环境与条件&#xff0c;包括良好的平顺性、车内的低噪声、适宜的空气环境以及良好的驾驶操作性能。 舒适性 经济性 安全性、动力性 典型的乘员舱热舒适性模…

测试 UDP 端口可达性的方法

前言&#xff1a; UDP (User Datagram Protocol) 是一种无连接的传输层协议&#xff0c;它不像 TCP 那样提供确认机制来保证数据包的可靠传输。因此&#xff0c;测试 UDP 端口的可达性通常需要一些特殊的方法&#xff0c;因为传统的端口扫描工具&#xff08;如 nmap&#xff0…

AGI系列(9)手把手带你玩转 Coze 画板节点

本文以智能体“日签卡片生成器”的制作来阐述 Coze 画板节点的使用方法。 效果演示 核心流程 日签卡片生成器工作流整体分为两部分&#xff1a; 工作流&#xff1a;其核心流程为通过用户输入的主题词生成卡片的标题、内容 图像流&#xff1a;通过LLM输出的内容在图像流完成卡…

Verilog开源项目——百兆以太网交换机(七)包修改模块设计

Verilog开源项目——百兆以太网交换机&#xff08;七&#xff09;包修改模块设计 &#x1f508;声明&#xff1a;未经作者允许&#xff0c;禁止转载 &#x1f603;博主主页&#xff1a;王_嘻嘻的CSDN主页 &#x1f511;全新原创以太网交换机项目&#xff0c;Blog内容将聚焦整体…

Java项目: 基于SpringBoot+mysql网上订餐系统分前后台(含源码+数据库+开题报告+PPT+毕业论文)

一、项目简介 本项目是一套基于SpringBootmysql网上订餐系统分前后台 包含&#xff1a;项目源码、数据库脚本等&#xff0c;该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c;eclipse或者idea 确保可以运行&#xff01; 该系统功能完善、界面美观、操作简单…

【北森-注册安全分析报告-无验证方式导致安全隐患】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

(二)Kafka离线安装 - Zookeeper下载及安装

一、下载 下载ZooKeeper之前&#xff0c;需要根据下载的Kafka版本&#xff0c;来确定ZooKeeper的版本。 Kafka官方地址&#xff1a;Apache Kafka 1、先下载源码版本&#xff0c;下载完后解压&#xff0c;在kafka-3.8.0-src\gradle目录下找到dependencies.gradle文件&#xff…

我用GPT对RAG技术的学习和探索

思维导图 下图是我的学习和探索过程&#xff0c;红点表示已研究&#xff0c;黄点表示待研究 目录 思维导图RAG技术概述RAG 的关键优点应用场景 如何了解RAG技术的原理和应用1. **基础理论学习**2. **实战演练**3. **学习资源利用**4. **保持学习的连贯性**5. **多角度理解**6. …

RASA使用长文记录以及一些bug整理

RASA 学习笔记整理 一 安装 在虚拟环境中安装&#xff0c;进入python3版本的环境 conda activate python3 ai04机器旧版本&#xff1a;rasa-nlu和rasa-core是分开安装的 最新版本&#xff1a;rasa 将二者做了合并 直接安装 pip3 install rasa 在安装到如下步骤时候会报…

应急响应-爆破漏洞应急响应流程(以SSH爆破为例)

目录 概述研判分析登录成功登录失败历史命令authorized_keys 定损止损攻击链路还原清理恢复总结复盘参考 概述 爆破漏洞是比较常见漏洞&#xff0c;端口开放&#xff0c;管理后台没有做登录频率限制等情况都可能遭受到爆破攻击&#xff0c;本文以SSH爆破为例&#xff0c;介绍下…

N10 - NLP中的注意力机制

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目录 1. 注意力机制是什么2. 注意力实现步骤0. 准备隐藏状态1. 获取每个编码器隐藏状态的分数2. 通过softmax层运行所有分数3. 通过softmax得分将每个编码器的…

以低代码技术加速推动企业数字创新

在数字化转型的浪潮中&#xff0c;企业面临着前所未有的挑战和机遇。随着技术的不断进步&#xff0c;企业需要快速适应市场变化&#xff0c;创新产品和服务&#xff0c;以保持竞争力。低代码技术作为一种新兴的开发模式&#xff0c;正逐渐成为企业数字创新的重要推动力。 低代码…

《深入浅出WPF》读书笔记.8路由事件

《深入浅出WPF》读书笔记.8路由事件 背景 路由事件是直接响应事件的变种。直接响应事件&#xff0c;事件触发者和事件响应者必须显示订阅。而路由事件的触发者和事件响应者之间的没有显示订阅&#xff0c;事件触发后&#xff0c;事件响应者安装事件监听器&#xff0c;当事件传…

财富趋势金融大模型已通过备案

财富趋势金融大模型已通过备案 8月28日晚&#xff0c;国内领先的证券软件与信息服务提供商——财富趋势&#xff0c;公布了其2024年上半年财务报告&#xff1a; 今年上半年&#xff0c;财富趋势营收1.48亿元&#xff0c;同比增长0.14%&#xff1b;实现归母净利润为1亿元&#x…

国标GB28181视频监控EasyCVR视频汇聚平台国标注册被陌生IP入侵如何处理?

GB28181国标/GA/T1400协议/安防综合管理系统EasyCVR视频汇聚平台能在复杂的网络环境中&#xff0c;将前端设备统一集中接入与汇聚管理。智慧安防/视频存储/视频监控/视频汇聚EasyCVR平台可以提供实时远程视频监控、视频录像、录像回放与存储、告警、语音对讲、云台控制、平台级…

nginx容器映射配置文件后,启动一直报错提示:failed (13: Permission denied)的排查

问题现象&#xff1a; 使用harbor 的install.sh 创建docker-compose之后&#xff0c;出现nginx容器一直重启。 查看日志发现是&#xff1a;配置文件无权限。报错信息如下&#xff1a; Sep 2 16:43:13 172.28.0.1 nginx[1344]: 2024/09/02 08:43:13 [emerg] 1#0: open() “/e…

HarmonyOS开发实战( Beta5版)线程间通信场景最佳实践

简介 在应用开发中&#xff0c;经常会需要处理一些耗时的任务&#xff0c;如果全部放在主线程中执行就会导致阻塞&#xff0c;从而引起卡顿或者掉帧现象&#xff0c;降低用户体验&#xff0c;此时就可以将这些耗时操作放到子线程中处理。通常情况下&#xff0c;子线程可以独立…