前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一套基于docker的多实例部署测试脚手架

一套基于docker的多实例部署测试脚手架

作者头像
Ryan-Miao
发布于 2022-09-07 06:59:29
发布于 2022-09-07 06:59:29
51100
代码可运行
举报
文章被收录于专栏:Ryan MiaoRyan Miao
运行总次数:0
代码可运行

最近在写下单功能实现,想要压测下。单纯压测本地很难达到效果,最好是像生产部署一样,基于实际情况进行压测。手头没那么机器的情况下,采用docker做实例化部署就可以了。

以部署下单服务为例,我需要把api服务打包,然后构建docker镜像,最后多实例部署。每次修改完毕代码手动改来改去挺花时间的。一度想要搭建gitlab-jenkins-k8s的方案:代码提交后自动部署到k8s. 但感觉有些复杂,最后选择基于docker-compose稍微改造来实现部署。

整体脚手架目录:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
.
├── conf
│   ├── default.conf
│   └── my-order.conf
├── docker-compose.yml
├── Dockerfile
├── entrypoint.sh
└── lib
    ├── readme.md
    └── simple-order-1.0-SNAPSHOT.jar
  • conf是nginx镜像的代理配置。
  • docker-compose.yml是入口
  • Dockerfile是打包springboot服务的docker镜像脚本
  • entrypoint.sh是启动服务的脚本
  • lib目录存放要部署的api服务

自己的测试代码编写完毕后,提交gitee. 在docker服务器上git pull, 然后执行mvn install,把打包好的jar包cp到lib目录。启动docker-compose up即可。

git pull和打包,后续可修改为脚本。就当前目标而言,已经满足我做自己服务压测部署了。

Dockerfile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
FROM openjdk:8
COPY ./lib /usr/src/myapp
WORKDIR /usr/src/myapp
COPY entrypoint.sh .

ENV server_port 8080

ENTRYPOINT [ "/bin/bash","entrypoint.sh" ]

entrypoint.sh

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
echo 'start' > a;
echo "cur port: $server_port" >> a;
# tail -f a;
java -jar *.jar --server.port=${server_port}

nginx order.conf

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
upstream order{
    server myapp:8080;
    server myapp2:8080;
}

server {
    listen       8090;
    server_name  _;

    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        proxy_pass http://order;
    }


}

docker-compose.yml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: '3'
services:
  myapp:
    build: 
      context: ./
    image: ryan/myapp:8
    environment: 
      - server_port=8080
    ports: 
      - 8083:8080
    cpu_count: 2
    mem_limit: 4gb
    # deploy:
    #   mode: replicated
    #   replicas: 2
    #   endpoint_mode: vip
  myapp2:
    image: ryan/myapp:8
    environment: 
      - server_port=8080
    ports: 
      - 8084:8080
    cpu_count: 2
    mem_limit: 4gb
    depends_on: 
      - myapp
  ng: 
    image: nginx
    volumes:
      - ./conf:/etc/nginx/conf.d
    ports:
      - "80:80"
      - "8090:8090"
    links: 
      - myapp
      - myapp2
    environment:
      - NGINX_HOST=foobar.com
      - NGINX_PORT=80
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Harmony Ble蓝牙App(二)连接与发现服务
  在上一篇中我们进行扫描设备的处理,本文中进行连接和发现服务的数据处理,运行效果图如下所示:
晨曦_LLW
2023/11/24
4190
Harmony Ble蓝牙App(二)连接与发现服务
Android 低功耗蓝牙开发(扫描、连接、数据交互)Kotlin版
  写这篇文章是因为有读者想看看Kotlin中怎么操作低功耗蓝牙,再加上我也想写一些关于Kotlin的内容,对于低功耗蓝牙的Java版的,我写了两篇,一个是扫描、连接,另一篇就是数据交互,而这篇Kotlin文章我会减少讲解的环节,更多的注重业务逻辑和UI以及Kotlin的语法。
晨曦_LLW
2021/12/30
1.8K0
Android 低功耗蓝牙开发(扫描、连接、数据交互)Kotlin版
Android 低功耗蓝牙开发(扫描、连接)
  之间我写过蓝牙开发的文章,只不过是针对于经典蓝牙,可以理解为普通蓝牙,连接的对象是经典蓝牙,列如手机蓝牙、蓝牙耳机等设备。而也有读者说在学习低功耗蓝牙,因此就有了这篇文章,一方面是为了丰富蓝牙的使用,一方面也是为了帮助看我文章的读者,我会讲的很细,很多人也说我在记流水账,不过这不重要,重要的是你从流水账里学到了什么。
晨曦_LLW
2021/07/23
2.9K0
鸿蒙 PageSlider 滑动组件基础用法【鸿蒙专题9】
各位同学大家好 有断时间没有给大家更新文章了具体多久我也记得了。最近还在学习鸿蒙开发, 学到了PageSlider 滑动组件类似安卓里面 viewpager 可以实现 屏幕左右滑动的效果 ,那么废话不多说我们正式开始
徐建国
2022/03/30
1K0
鸿蒙 PageSlider 滑动组件基础用法【鸿蒙专题9】
HarmonyOS实战—服务卡片初体验
最近看到很多博客网站上出现了HarmonyOS的征文活动,看到那些精美的奖品让我也安耐不住开了,当然奖品的诱惑当然是抵挡不住我对技术的狂热追求,对于开发者而言技术没有顶峰没有终点。那么今天给大家做一个卡片服务开发的经验分享,如果有什么地方说的不对的请各位开发者进行指正,如果有什么问题也可以发私信或者直接在帖子中留言,我也会及时回复大家。
爱吃土豆丝的打工人
2021/11/10
1.2K0
HarmonyOS实战—服务卡片初体验
自学鸿蒙应用开发(33)- 在布局中使用自定义UI组件
组建容器类ArcProgressBarContainer负责协调每个ArcProgressBar的描画动作。
面向对象思考
2021/03/16
9220
自学HarmonyOS应用开发(75)- 显示拍摄结果
照片拍摄完成接下来的动作就是确认拍照结果。我们的实现方法是对前面文章中用到的文件浏览器功能进行扩展,从而实现一个简单的照片浏览器功能。
面向对象思考
2021/11/25
5270
自学HarmonyOS应用开发(75)- 显示拍摄结果
Android 12 蓝牙适配
  在我的申请下,公司终于购买了一台基于Android12.0的手机,然后我就开心的拿去安装测试了,发现程序崩溃了,于是我这里就写下来,Android12.0的蓝牙适配方法。
晨曦_LLW
2022/04/27
2.2K0
Android 12 蓝牙适配
Harmony Ble蓝牙App(四)描述符
  上一篇中了解了特性和属性,同时显示设备蓝牙服务下的特性和属性,本文中就需要来使用这些特性和属性来完成一些功能。
晨曦_LLW
2024/05/25
3380
Harmony Ble蓝牙App(四)描述符
自学鸿蒙应用开发(18)- Ability内部画面迁移
布局代码中第59行~第97行的用于生成分别向组件Slice,列表Slice和标签页Slice进行迁移的按钮。程序执行时的画面表示如下:
面向对象思考
2021/01/14
3790
自学鸿蒙应用开发(18)- Ability内部画面迁移
自学鸿蒙应用开发(17)- TabList和Tab
在layout目录下创建TabList布局,将其命名为ability_tablist.xml。
面向对象思考
2021/01/13
5400
自学鸿蒙应用开发(5)- button组件
代码中按钮id被指定为hello_button,这个信息会在下面的响应代码中用到。
面向对象思考
2020/12/31
8800
自学鸿蒙应用开发(5)- button组件
【鸿蒙 HarmonyOS】UI 组件 ( Text 组件 )
id 属性 : ohos:id="$+id:text_helloworld" , 用于作为当前组件的唯一标识 , 在单个布局文件中不允许 id 标识重复 ;
韩曙亮
2023/03/28
9960
【鸿蒙 HarmonyOS】UI 组件 ( Text 组件 )
“开辟鸿蒙 ” - 鸿蒙系统应用开发尝鲜
第一次知道“鸿蒙”这个词,是在《红楼梦》的开篇引子。鸿蒙,在古典文化中,表示宇宙形成前的混沌状态,意为开天辟地之前。
极客人
2020/10/09
9110
HarmonyOS实战——ToastDialog组件基本使用
1. ToastDialog 简介 [在这里插入图片描述] ToastDialog 是 CommonDialog 的子类,他们的用法几乎是一致的,只不过 ToastDialog 有自己的特性 ToastDialog 的组成如下:标题、提示内容、选择按钮 [在这里插入图片描述] 一般只会用中间的提示内容,因为 ToastDialog 出现的意义就是用来作消息提示的 ToastDialog 弹框有自己的展示时间,默认展示 2 秒钟,时间到了之后弹框就会自动消失 2. ToastDialog 案例 案例:点击按钮
兮动人
2021/09/13
7420
HarmonyOS实战——ToastDialog组件基本使用
【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )
代码示例 GitHub 地址 : https://github.com/han1202012/HarmonyHelloWorld
韩曙亮
2023/03/28
8500
【鸿蒙 HarmonyOS】界面跳转 ( AbilitySlice 之间的界面跳转 | AbilitySlice 之间的值传递 )
【鸿蒙 HarmonyOS】界面跳转 ( Page Ability 的 action 标识 | Page Ability 之间的界面跳转及传递数据 | 鸿蒙工程下创建 Module | 代码示例 )
Page Ability 界面跳转 , 其中 Page Ability 是通过 action 字符串进行标记的 , 每个 Page Ability 对应的 action 字符串在 src/main/ 下的 config.json 中配置 ,
韩曙亮
2023/03/28
1.4K0
【鸿蒙 HarmonyOS】界面跳转 ( Page Ability 的 action 标识 | Page Ability 之间的界面跳转及传递数据 | 鸿蒙工程下创建 Module | 代码示例 )
自学鸿蒙应用开发(13)- ProgressBar
下面代码中的第18行获取ProgressBar组件后,在第19行根据TimePicker的状态更新Progress的形式,然后在第26行TimerPicker的响应处理中,同样是根据TimePicker的状态更新ProgressBar的值。
面向对象思考
2021/01/13
5270
HarmonyOS实战—实现长按事件
1. 长按事件 长按事件使用的次数不是很多,但在有些特殊的情况下还是要用到的。 比如:复制一段文字的时候就是长按操作 长按事件和单、双击事件也非常类似 接口名:LongClickedListener
兮动人
2021/08/22
1.2K0
HarmonyOS实战—实现长按事件
【鸿蒙 HarmonyOS】UI 组件 ( 多选按钮 | Checkbox 组件 )
调用 Checkbox 对象的 setCheckedStateChangedListener 方法设置 选中 / 取消选中 的 AbsButton.CheckedStateChangedListener 监听器 , 当用户 选中 / 取消选中 时 , 会回调上述监听器的 onCheckedChanged 方法 , 其中第二个参数 boolean b , b 为 true 多选按钮选中 , false 取消选中 ;
韩曙亮
2023/03/28
1.8K0
【鸿蒙 HarmonyOS】UI 组件 ( 多选按钮 | Checkbox 组件 )
推荐阅读
相关推荐
Harmony Ble蓝牙App(二)连接与发现服务
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验