SCI论文(www.lunwensci.com)
摘 要:容器化部署是当今最流行的部署方法之一,它具有更快、更频繁的软件产品交付、高敏捷性和灵活性、资源利用 率以及随时随地运行的特点。前后端分离模式是当前主流的开发模式和架构模式,在优化开发效率的同时也让应用的部署方式 发生了改变,一般情况下,前后端分离应用是分开独立部署的,但是考虑软硬件成本及运维成本,前后端分离应用集成部署也 是企业的选择之一。本文基于当前主流开发技术工具,设计并实现了前后端分离应用的容器化集成部署的方案。
关键词:容器化部署,前后端分离模式,容器化集成部署
Design and Implementation of Containerized Integrated Deployment for Front- end and Back-end Separation Applications
CHEN Yu1. ZHANG Yumeng2
(1.Head Office Information Technology Department, Shanghai Pudong Development Bank, Shanghai 200000; 2.Information Technology Department of Zhengzhou Branch, Shanghai Pudong Development Bank, Zhengzhou Henan 450000)
【Abstract】: Containerized deployment is one of the most popular deployment methods today, with faster, more frequent delivery of software products, high agility and flexibility, resource utilization, and running anywhere. Front-end and back-end separation mode is the current mainstream development mode and architecture mode, in the optimization of development efficiency but also to change the deployment of applications, in general, front-end and back-end separation applications are separately deployed independently, but considering the cost of software and hardware and operation and maintenance costs, front-end and back-end separation application integration deployment is also one of the choices of enterprises. Based on the current mainstream development tools, this paper designs and implements the containerized integration deployment of front-end and back-end separation applications .
【Key words】: containerized deployment;front-end and back-end separation mode;containerized integration deployment
0 引言
容器化是软件开发的一种方法,通过该方法可将应 用程序或服务、其依赖项及其配置(抽象化为部署清单 文件)一起打包为容器映像。 容器化应用程序可以作为 一个单元进行测试,并可以作为容器映像实例部署到主 机操作系统(OS)。
就像船只、火车或卡车运输集装箱而不论其内部的 货物一样,软件容器充当软件部署的标准单元,其中可以包含不同的代码和依赖项。按照这种方式容器化软 件,开发人员和 IT 专业人员只需进行极少修改或不修 改,即可将其部署到不同的环境。
容器还会在共享 OS 上将应用程序彼此隔离开。容器 化应用程序在容器主机上运行,而容器主机在 OS(Linux 或 Windows)上运行。因此,容器的占用比虚拟机 (VM) 映像小得多。
每个容器可以运行整个 Web 应用或服务,如图 1 所示,在此示例中, Docker 主机是容器主机,而 App1、 App2、Svc1 和 Svc2 是容器化应用程序或服务。
容器化的另一个优势在于可伸缩性。通过为短期 任务创建新容器,可以快速扩大。从应用程序的角度 来看,实例化映像(创建容器)类似于实例化服务或 Web 应用等进程。但出于可靠性考虑,在多个主机服 务器上运行同一映像的多个实例时,通常要使每个容器 (映像实例)在不同容错域中的不同主机服务器或 VM 中运行。
容器在整个应用程序生命周期工作流中提供以下优 点 :隔离性、可移植性、灵活性、可伸缩性和可控性。 最重要的优点是可在开发和运维之间提供隔离。
容器化是目前主流的部署方式之一。
前后端分离模式如图 2 所示,是一种以业务数据为 核心,面向数据的开发模式和应用架构模式。前后端分 离模式是一种开发模式,是由于前、后端应用程序的开 发人员分工明确所致,前端人员专注编写页面(HTML、 JSP)和渲染(JS、CSS 等前端框架) ;后端专注业务逻 辑和数据处理 ;前后端分离模式是一种应用架构模式, 主要指一种应用部署方式,该方式中,后端应用程序中 不包含任何和页面相关的资源,前端应用程序单独部 署,前后端应用程序通过数据接口传输数据。
前后端分离模式具有提高开发效率、增强系统安全性以及提升表现性能等方面的优势,基于前后端分离模 式,许多研究完成了落地实施 [1-16]。
一般情况下,前后端分离应用是分开独立部署的,但 是考虑软硬件成本及运维成本, 前后端分离应用集成部 署也是企业的选择之一。为充分利用容器化部署、前后 端分离优势,本文基于 Springboot[17]、Vue[18]、NodeJS、 Docker 等当前主流开发工具,设计并实现了前后端分离 应用的容器化集成部署方案。
1 方案设计
本方案使用了 Maven、SpringBoot、NodeJS、Vue、 Docker、JDK 等工具, 其中,Maven 用于对基于 Spring Boot 的后端应用的编译, NodeJS 用于对基于 Vue 的 前端应用的编译,Docker 用于容器镜像的构建。
总体设计方案如图 3 所示。
1.1 前端应用程序的构建方案
(1)前端应用程序依赖库使用 NodeJS 的 npm 工 具安装 ;
(2) 编译、生成前端应用程序使用 NodeJS 的 npm 工具,即 npm run 命令 ;
(3) 将前端应用程序编译出的 dist 目录拷贝到服务器的指定目录 ${root_dir}。
1.2 后端应用程序的构建方案
(1) 后端应用程序依赖库配置在 Maven 使用的 pom.xml 文件中 ;
(2) 后端应用程序使用 SpringBoot 提供的静态资 源配置项(spring.resources.stati c-locations) 对前 端应用程序的静态资源目录 ${frontend_dir} 进行配置 ;
(3) 编译、生成后端应用程序使用 Maven 工具,即 mvn install 命令 ;
(4)将后端应用程序编译出的jar 文件拷贝到服务 器的指定目录 ${root_dir}
1.3 容器化镜像的构建方案
(1) 在服务器指定目录 ${root_dir} 下创建 Dockerfile 和启动脚本 startApp.sh ;
(2) 在 Dockerfile 中编写将前端应用程序编译出的 dist 目录拷贝到 ${frontend_dir} 下的命令, 将后端应 用程序jar 文件拷贝到根目录的命令以及将 startApp. sh 拷贝到根目录的命令 ;
(3) 在 Dockerfile 中指定容器启动脚本为 startApp. sh。
2 方案实现
将 ${root_dir} 指定为根目录“/”, ${frontend_dir} 指定为 /dist, 后端应用程序jar 文件为 deployment.jar, 则构建实现如下。
2.1 前端应用的构建实现
实现脚本 buildFrontEnd.sh 代码如下 :
npm run build
cp -fr dist /
2.2 后端应用的构建实现
(1)SpringBoot 静态资源配置项如下 :
spring.resources.static-locations=/
(2)实现脚本 buildBackEnd.sh 代码如下 :
mvn install
cp -f target/*.jar /
2.3 容器化镜像的构建实现
(1)Dockerfile 文件主要内容如下 :
FROM 基础镜像
COPY /dist /dist
COPY startApp.sh /
COPY *.jar /
CMD ["/bin/sh", "startApp.sh"]
(2)启动脚本 startApp.sh 内容如下 :
java -jar deployment.jar
(3)构建 Docker 镜像脚本 build.sh 的内容如下 :
docker build -f Dockerfile
最终容器镜像将在基础镜像的基础上新增 /dist 目 录、 startApp.sh、deployment.jar, 容器镜像文件逻 辑关系如图 4 所示。
3 实验测试
通过容器启动命令启动前后端分离应用集成部署的 容器实例,命令为 docker run -it 镜像名。
采用上述方案的设计与实现, 经测试,可以实现基 于 SpringBoot、Vue、NodeJS、Docker 等 工 具 的 前 后端分离应用的容器化集成部署。
访问容器化集成部署的测试页面如图 5 所示,该 页面为前端应用程序编译出的 dist 目录下的静态页面, 通过数据接口访问容器实例中的后端应用程序而生成。
4 结语
本文基于 SpringBoot、Vue、NodeJS、Docker 等 当前主流开发工具, 设计并实现了前后端分离应用的容 器化集成部署方案。该方案实现简单,具有可复制性, 在充分利用容器化部署、前后端分离优势的同时,可 以降低软硬件等运维成本,为系统部署提供了一种可行 选项。
但是本方案还有不足之处,例如,当前方案还需 进一步实现自动化的构建,而且当前方案是基于 Java、 JavaScript 语言, 在 SpringBoot、Vue、NodeJS 等工具 的支持下完成的,而生产实际中存在多种其他语言和工具,后续,本方案将进一步与 Jenkins 进行整合实现自 动化构建,并进一步扩展对其他前后端开发语言的支持。
参考文献
[1] 陈浩.NodeJS中ModelProxy接口配置建模研究[J].软件导 刊,2014.13(9):67-68.
[2] 刘义忠,张伟.基于SSM框架的后台管理系统设计与实现[J]. 软件导刊,2019.18(2):68-71.
[3] 徐建国,万千山.基于敏捷开发的企业管理系统模板设计与 应用[J].软件导刊,2020.19(6):171-175.
[4] 陶铭,谢仁平.基于SpringBoot的在线教育系统研发及应用 实践[J].软件导刊,2022.21(07):170-174.
[5] 罗剑,邢翠,聂鑫.混合式教学模式下Web前端技术教学资源 建设研究[J].软件导刊,2021.20(7):198-201.
[6] 代立晨,王晨.微服务架构下的在线律师网站重构与优化[J]. 软件导刊,2021.20(9):144-149.
[7] 陶铭,谢仁平.基于SpringBoot的在线教育系统研发及应用 实践[J].软件导刊,2022.21(7):170-174.
[8] 高祝宇,何妤斐,曾悠,等.基于Spring的气象数据服务系统设 计与实现[J].软件导刊,2020.19(9):110-114.
[9] 郑清杰,郑智健.前后端分离搭建气象设备管理系统[J].电脑 编程技巧与维护,2022(10):106-107+130.
[10] 郭建卫.基于前后端分离的新生入学资格复查管理系统设 计[J].现代信息科技,2022.6(16):149-152.
[11] 高云泽,王莉莉,董文睿,等.基于前后端分离算法的ACM智 能管家系统[J].智能计算机与应用,2022.12(3):80-86.
[12] 杨博闻.前后端分离的校园闲置物品交易平台开发[J].福建 电脑,2022.38(2):90-92.
[13] 李航,董安明,禹继国,等.基于前后端分离架构的智慧农业 物联网系统设计[J].现代电子技术,2022.45(14):63-68.
[14] 崔娟,章恒,马尧,等.基于Spring Security框架的前后端分 离软件平台构建的研究[J].科学技术创新,2022(4):73-76.
[15] 赵圆圆,伍岑.前后端分离的系统解耦部署方案设计与实现 [J].计算机时代,2022(10):5-8.
[16] 方生,秦晓安,王睿.基于前后端分离技术的在线购物平台 研究与实现[J].黄河水利职业技术学院学报,2021.33(4):50-54.
[17] Craig Walls.Spring Boot实战[M].丁雪丰,译.北京:人民 邮电出版社,2016.
[18] 霍春阳.Vue.js设计与实现[M].北京:人民邮电出版社, 2022.
关注SCI论文创作发表,寻求SCI论文修改润色、SCI论文代发表等服务支撑,请锁定SCI论文网!
文章出自SCI论文网转载请注明出处:https://www.lunwensci.com/jisuanjilunwen/54972.html