iis服务器助手广告
返回顶部
首页 > 资讯 > 操作系统 >如何将Teprunner测试平台部署到Linux系统Docker
  • 682
分享到

如何将Teprunner测试平台部署到Linux系统Docker

2023-06-15 14:06:41 682人浏览 八月长安
摘要

如何将Teprunner测试平台部署到linux系统Docker,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。本地运行通过在Vue项目执行npm run serve和在Djan

如何将Teprunner测试平台部署到linux系统Docker,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

本地运行

通过在Vue项目执行npm run serve和在Django项目执行python manage.py  runserver,我们把项目在本地跑起来了,示意图如下:

前端在本地启了个node服务器后端在本地启了个DjanGo服务器,分别使用8080和8000端口。浏览器有个同源策略:域名、端口、协议三者一致才能进行访问,否则会由于跨域访问而被浏览器拦截。图中前后端的端口不一致,出现了跨域,前端是无法直接请求后端的。解决办法是在vue.config.js中配置devServer:

这是Node开的一个代理服务器,当前端请求后端时,会先发向Node代理服务器,Node代理服务器以相同的参数向真正的后端服务器进行请求,再把响应返回给前端。在本项目中,前端请求仍然是发给Http://127.0.0.1:8080,浏览器不会拦截,Node代理服务器会帮你把请求转发给后端8000端口。

Nginx部署

搞懂了本地运行代理转发,再来看看Nginx部署。Nginx本身是个服务器,就像Node服务器一样,也可以看做Apache  Tomcat。Vue项目使用npm run build命令把代码构建为dist目录静态文件,放到Nginx服务器中加载出来,结合Docker示意图如下:

相比于本地运行,Nginx部署时,前端变化比较大,一:dist静态文件拷贝到了/usr/share/nginx/html目录中,二:对/路径来说,Nginx会监听80端口,三:对/api路径来说,Nginx会把请求转发到后端服务器端口,这也叫做反向代理。后端没有什么变化,为了和本地运行看着有点区别,把端口稍微改了下,Docker内部使用80端口。

这里比较关键的是理解Docker  teprunner-frontend、Docker  teprunner-backend、Linux三者之间的关系。如果不知道Docker,那么应该听说过虚拟机,Docker从概念上理解就像是虚拟机,这三者可以看做是三台主机。Linux的IP是172.16.25.131,80端口映射到了Docker  teprunner-frontend的80端口,8099端口映射到了Docker  teprunner-backend的80端口,如图中下方双向箭头所示。在Linux上访问http://127.0.0.1,能打开登录页面,但是无法向后端发起请求,因为从80端口直接请求8099端口,跨域了。解决办法是在Docker  teprunner-frontend借助Nginx进行反向代理,把请求先发送到Nginx服务器,再转发给Linux的8099端口。

不能在Docker  teprunner-frontend中把/api的代理设置为http://127.0.0.1:8099,因为这个Docker容器的8099端口并没有启用,启用的是Linux这台机器上的8099端口,所以需要通过IP来指定。

整体思路明确了,接下来就开始动手操作。

编写deploy脚本

前端

打开teprunner-frontend文件夹,新建deploy/nginx.conf文件:

/路径从user/share/nginx/html读文件,入口为index.html,/api转发到http://172.16.25.131:8099。这个文件会拷贝到Docker镜像中。新建Dockerfile文件:

FROM定义了基础镜像,可以理解为操作系统,前端项目基于nginx来构建。WORKDIR定义了镜像当前工作目录,意思是在执行后面COPY操作时,镜像目录用哪一个。COPY分别把dist静态文件和nginx.conf配置文件拷贝到镜像中,COPY指令第一个参数是本机目录,第二个参数是镜像目录。镜像目录通过WORKDIR来指定,本机目录通过Docker上下文来指定,新建build.sh文件:

DockerContext指定了Docker上下文为teprunner-frontend根目录。这里的shell脚本有两个阶段,第1阶段是使用node编译:

docker run  # 运行镜像  --rm  # 运行后删除容器 -v $(pwd)/../:/data/src  # $(pwd)指当前工作目录,把根目录挂载到data/src -v /root/.npm/_logs:/root/.npm/_logs  # 挂载日志文件 -w /data/src/  # 镜像当前工作目录 $BUILDER_IMAGE  # 运行镜像为node:latest,用node编译前端代码 /bin/sh -c "npm install && npm run build"  # /bin/sh是shell可执行程序,调用执行npm命令

第2阶段是打包成Docker镜像:

docker build  # 构建镜像 -f $Dockerfile  # 指定Dockerfile文件位置 -t $PkgName  # 镜像包名 $DockerContext  # Docker上下文

后端后端也是类似的,先新建deploy/Dockerfile文件:

后端项目基于Python:3.8来构建,接着设置了时区,COPY .  .把Django源文件直接复制到了镜像目录/app/release中,RUN指令执行pip  install命令安装依赖包,CMD和RUN有点区别,RUN指令在docker build时就执行,CMD指令在docker run时才执行,预定义启动命令。

这里简化了迁移数据库migrate等启动命令,服务器数据库和本地用的同一个。

再新建build.sh文件:

Python代码不需要编译,打包成Docker镜像就可以了。

部署到Ubuntu系统Docker

Linux系统是内核版本,它有很多发行版本,比如Centosubuntu,本文采用了Ubuntu,只有一个原因,它长的好看。

大学室友曾经冲动地把windows系统换成了Ubuntu,还天天跟我们炫耀有多酷炫有多牛逼,过了两三天发现Office不好用,也玩不了游戏,就又换回来了。哈哈,Ubuntu平时玩玩就好了,除非是做Linux内核开发

下载软件:

  • VMware 破解版

  • Ubuntu Desktop 20.04

安装过程此处不再另加赘述。打开虚拟机的Ubuntu:

打开Terminal,输入su,输入密码,切换到root:

发现缺少权限就su一下。

安装curl:

apt-get install curl

安装docker:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

使用ifconfig查询虚拟机IP:

不要选择.git和node_modules文件夹,把teprunner-frontend打成压缩包。不要选择.git和__pycache__文件夹,把teprunner-backend打成压缩包。复制前后端压缩包到虚拟机Documents解压:

Ubuntu  Desktop的好处是提供了图像化操作界面,适合我这种小白用户。使用命令行编辑工具vi或者图形编辑工具gedit编辑teprunner-frontend/deploy/nginx.conf文件中/api转发地址为你的虚拟机实际IP地址:

打开两个Terminal,分别cd到teprunner-frontend/deploy和teprunner-backend/deploy,执行./build.sh命令。

如果执行提示^M之类报错,那是因为在Windows编辑后复制到Linux格式不一致,使用apt-get install  dos2unix命令安装工具后进行格式转化,比如dos2unix build.sh、dos2unix Dockerfile。

第一次因为要下载node依赖包和拉取nginx镜像,会比较慢,第二次就快很多了。

第一次因为要拉取python镜像,会比较慢,第二次就快多了。都构建完成后,输入docker  images命令就能看到打包好的Docker镜像了:

启动前端镜像:

docker run -p 80:80 teprunner-frontend

启动后端镜像:

docker run -p 8099:80 teprunner-backend

镜像启动后就变成了Docker容器,可以理解为一台虚拟主机。-p参数用于映射Ubuntu端口和Docker端口。可以添加-d参数让容器在后台运行。docker  ps -a查看容器,docker kill CONTaiNER或docker stop CONTAINER退出容器。

最后可以在虚拟机中访问http:127.0.0.1进行登录了,本地机器想要访问的话,需要把127.0.0.1改为你的虚拟机实际IP,比如http://172.16.25.131。

在使用过程中,也感受到了Docker这一划时代技术的魅力,如果没有Docker,我们需要在Ubuntu上面安装nginx、node、python等软件,有了Docker,我们只需要安装Docker,其他都基于Docker镜像构建就可以了。teprunner测试平台的用例采用的是代码形式,这就涉及到了代码存放位置的问题,为了让pytest能调用执行,肯定是存放到文件里面的。本文实践给了个重要提醒,如果后端把代码直接写入磁盘文件,每次打包镜像部署后,就会把已保存的用例代码抹掉。解决这个问题的第一个办法是用k8s,第二个办法是把代码存数据库。学习版采用了第二个办法存数据库,执行时动态从数据库拿代码生成文件。

最后,简单聊下Docker和K8S,Docker是Docker公司的,K8S是Google的,Docker是家小公司搞的,在创建之初,并没有考虑到“容器编排”这个功能,2014年  Google推出kubernetes用于解决大规模场景下Docker容器编排的问题,2016年Kubernetes发布CRI统一接口,虽然Docker也在2016年发布了Docker  Swarm,带来了Docker在多主机多容器的编排解决方案,但是已经无法阻挡K8S取得这场容器编排战争的胜利。

看完上述内容,你们掌握如何将Teprunner测试平台部署到Linux系统Docker的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网操作系统频道,感谢各位的阅读!

--结束END--

本文标题: 如何将Teprunner测试平台部署到Linux系统Docker

本文链接: https://www.lsjlt.com/news/280574.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 如何将Teprunner测试平台部署到Linux系统Docker
    如何将Teprunner测试平台部署到Linux系统Docker,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。本地运行通过在Vue项目执行npm run serve和在Djan...
    99+
    2023-06-15
  • 如何将Bokeh应用部署到云平台上
    非常抱歉,由于您没有提供文章标题,我无法为您生成一篇高质量的文章。请您提供文章标题,我将尽快为您生成一篇优质的文章。...
    99+
    2024-05-21
  • Linux系统中如何部署Docker
    这篇文章给大家分享的是有关Linux系统中如何部署Docker的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中...
    99+
    2023-06-28
  • 如何将php项目部署到linux系统上
    本篇内容介绍了“如何将php项目部署到linux系统上”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!第一步:安装必要的软件在部署 PHP 项...
    99+
    2023-07-05
  • 怎么将SpringBoot应用Docker化并部署到SAP云平台
    这篇文章主要介绍“怎么将SpringBoot应用Docker化并部署到SAP云平台”,在日常操作中,相信很多人在怎么将SpringBoot应用Docker化并部署到SAP云平台问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希...
    99+
    2023-06-04
  • 关于如何使用docker部署centos系统测试环境
    目录一、检查本地服务器系统版本二、检查docker版本三、检查docker状态四、下载centos镜像五、创建centos容器1.运行cnentos容器2.进入容器内六、centos...
    99+
    2023-05-14
    docker docker部署centos centos系统环境
  • 如何将Hadoop部署在云平台上
    要在云平台上部署Hadoop,您可以按照以下步骤进行操作: 选择一个适合的云平台:每个云平台都有其自己的优势和特点,您可以根据自己...
    99+
    2024-04-09
    Hadoop
  • 怎么使用docker部署centos系统测试环境
    今天小编给大家分享一下怎么使用docker部署centos系统测试环境的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、检查...
    99+
    2023-07-05
  • 怎么将php项目部署到linux系统上
    在现代化的软件开发过程中,项目部署已经成为了不可或缺的一个环节。其中,将 PHP 项目部署到 Linux 操作系统上是相对比较普遍的一种方式。本文将着重介绍如何将一个 PHP 项目部署到 Linux 操作系统上的步骤和注意事项。第一步:安装...
    99+
    2023-05-14
    php linux
  • idea中如何将springboot项目部署到docker
    这篇“idea中如何将springboot项目部署到docker”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“idea中如何...
    99+
    2023-06-08
  • 如何在Linux系统上部署docker私有仓库
    这篇文章给大家分享的是有关如何在Linux系统上部署docker私有仓库的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。修改配置http访问[root@test01 ~]# cat /...
    99+
    2023-06-05
  • Docker部署net5程序如何实现跨平台功能
    这篇文章主要介绍Docker部署net5程序如何实现跨平台功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!部署环境:docker 容器、liunx系统、这里采用VmWare虚拟机、并采用MobaXterm工具实现终...
    99+
    2023-06-15
  • 如何将.NET 6项目部署到Linux
    这篇文章主要介绍“如何将.NET 6项目部署到Linux”,在日常操作中,相信很多人在如何将.NET 6项目部署到Linux问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何将.NET&n...
    99+
    2023-06-22
  • Linux系统如何部署ThinkPHP
    这篇文章主要介绍Linux系统如何部署ThinkPHP,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!ThinkPHP简介:ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。ThinkPHP从诞生以...
    99+
    2023-06-28
  • Portainer中如何部署Docker监控系统
    本篇文章给大家分享的是有关Portainer中如何部署Docker监控系统,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。组件简介cAdvisor:用于数据采集cadvisor谷...
    99+
    2023-06-19
  • Linux系统中如何将Linux命令放到后台运行
    这篇文章主要介绍了Linux系统中如何将Linux命令放到后台运行,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。“命令 &”,把命令放入后台执行第一种把命令放入后台的...
    99+
    2023-06-28
  • Linux系统中如何部署thinkphp
    这篇文章将为大家详细讲解有关Linux系统中如何部署thinkphp,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生国产PHP开发框架,下面...
    99+
    2023-06-28
  • 如何快速部署Spring PetClinic到函数计算平台
    今天就跟大家聊聊有关如何快速部署Spring PetClinic到函数计算平台,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。简介首先介绍下在出现的几个比较重要的概念:函数计算(Fun...
    99+
    2023-06-04
  • 如何将asp.netcore程序部署到Linux服务器
    目录1.创建一个测试的asp.net core web api 项目2.准备一台云服务器或者虚拟机3.安装asp.net core runtime 运行时即可。4.使用dotnet和...
    99+
    2024-04-02
  • 如何将nodejs部署到linux上跑出hello world
    这篇文章给大家分享的是有关如何将nodejs部署到linux上跑出hello world的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先安装 VMware1. 下载 VMwar...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作