docker部署project-exam-system

使⽤docker部署project-exam-system

1. 背景,在⼀台主机之内,实现容器的编排,发布考试系统

2. 环境准备

   1. docker

        1. vim /etc/docker/daemon.json

   2. docker-compos

3. 普通的部署

    1. 镜像

        1. 前端:nginx latest服务

              1. 拉取nignx:latest镜像

               2. 测试

               3. 上传前端项⽬dist

               4. 创建启动容器

               5. 测试成功

               6. 出现问题,在实现登录的时候,都实现后段异常, 原因后段还没后部署

               7. 登录的时候请求的域名bu.yuanyu.zhangmin,我们是 hosts域名劫持来实现

          2. 后端的业务 jdk17 springboot 有点 不⽤单独部署 tomcat,已经在springboot中内置tomact

                1. 准备拉取基础centos镜像

                2. Docker run -it centos:latest /bin/bash

                3. ctrl p q

                4. jdk17版本的⽂件

                5. 项⽬资源 .war. .perpreties

                6. 将在服务器上的jaav的资源⽂件上传到容器

                      1. 上传jdk

                        2. 向容器上传为服务的项⽬⽂件

                        3. 向容器上传微服务的配置⽂件

                         4. 对已经传到容器的⽂件进⾏部署

                         5. 解压⽂件到指定的⽬录,并且跳过第⼀层⽬录

                         6. 测试启动微服务

                 7. 修改appllcaiton.properties⽂件

                     1. spring.datesource.url=jdbc:msyql://你的主机 的ip:3306/project_exam_system

                 8. ctrl p q 退出

                 9. 根据容器创建镜像

                  10. 查看镜像

                   11. 停⽤原来的容器

                  12. 移除原来的容器

                       docker rm 28b9

                   13. 根据新建的镜像,创建容器

                        docker run -itd -p8080:8080 java:v0

                    14. docker ps查看容器的进程

                      15. 将java容器的终端附加到当前终端

                        16. 启动springboot微服务

nmt

nginx

    1.下载镜像,启动镜像,将本地的dist项⽬的⽬录挂载在容器 的/usr/share/nginx/html

    2.启动服务

    3.前后端分离的项⽬,并⾮所有的请求都是来⾃于同⼀个位置, 设置请求的时候还是需要在hosts⽂件中挟持域名

    4.域名是固定的,但是,域名可以绑定不同的ip

mysql

    1. 各个版本都有官⽅的镜像,直接下载 docker pull msyql:5.7.44

     2. 启动容器的时候,挂载data⽬录

    3. 制作data的时候,顺⼿删除auto.cnf

tomcat

   1. 被war包集成,所以我们直接启动war

   2. springboot 可以直接集成tomcat,build⼀个jar v包或者 是war

   3. 我们没有安装tomcat

   4. application.properties

      1. 可以配置端⼝ 2. 配置数据库的访问

   5. 使⽤/usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war启动,但是在启动这个任务⼀ 定要跳转到⽂件所在⽬录,因为在启动的同时,还需要加载 applicaiton.properrties

   6. Dockerfile创建镜像,如果对象的主机上没有对应镜像,我们 希望使⽤⼀个⽂件创建项⽬,就需要使⽤到Dockerfile,使⽤ docker build,也需要在Dockerfile所在⽬录中执⾏docker build,否则找到Dockerfile也是⽆法创建制作docker-compose.yml⽂件,实现⼀键部署

构建一个基于Spring Boot和Vue.js的在线考试管理系统需要分为前端和后端两个部分来设计。以下是构建这个系统的大概步骤: **1. 创建Spring Boot项目** 首先,你需要创建一个新的Spring Boot项目。这通常通过Maven或Gradle完成。例如,使用Spring Initializr (https://start.spring.io/) 或者在命令行中运行`spring init --type=spring-boot-starter-webflux`。 ```bash mkdir exam-management-system cd exam-management-system gradle init --type=maven-project --package=com.example.exammanagement --main-class=ExamManagementApplication ``` **2. 设计数据库模型** 在Spring Boot项目中添加JPA或MyBatis等持久层框架,并创建相应的实体类(Entity),如User、Question、Answer等。例如: ```java @Entity public class User { @Id private Long id; private String username; // getters and setters... } ``` **3. 定义REST API** 在Spring Boot应用中,创建Controller来处理HTTP请求。例如,为用户管理、试题管理等创建API: ```java @RestController @RequestMapping("/api/users") public class UserController { @PostMapping public ResponseEntity<User> createUser(@RequestBody User user) { // ... save to database } } ``` **4. 部署Vue.js前端** 在项目中创建一个static目录,用于存放Vue.js项目的dist文件。你可以使用Webpack或Vite构建Vue.js应用: ```bash npm install -g vue@next vite vite create frontend ``` **5. 开发Vue组件** 在前端,使用Vue Router管理路由,Vuex管理状态,开发用户界面,比如登录页面、试题列表、答题页等。 **6. API通信** 在Vue.js应用中,使用axios或其他库来调用Spring Boot API进行数据交互: ```javascript import axios from 'axios'; export const login = async ({ username, password }) => { const response = await axios.post('/api/users/login', { username, password }); return response.data; }; ``` **7. 集成前后端** 配置Spring Boot应用来启用跨域支持,并允许静态资源访问。使用Spring Security处理身份验证和授权。 **8. 测试和部署** 测试所有功能是否正常工作,然后将整个系统部署到服务器,可以使用Docker容器化并结合Kubernetes进行管理和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值