如何构建基于Docker的多实例长尾词测试脚手架?

2026-04-11 08:051阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计584个文字,预计阅读时间需要3分钟。

如何构建基于Docker的多实例长尾词测试脚手架?

最近实现了一个功能,想进行测试。单纯的本地压测效果很难达到,最好是像生产部署一样,基于实际情况进行压测。没有那些机器的情况,采用Docker容器化部署就可以实现。

如何构建基于Docker的多实例长尾词测试脚手架?

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

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

整体脚手架目录:

. ├── 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

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

#!/bin/bash echo 'start' > a; echo "cur port: $server_port" >> a; # tail -f a; java -jar *.jar --server.port=${server_port}

nginx order.conf

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 order; } }

docker-compose.yml

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

关注我的公众号

唯有不断学习方能改变! -- Ryan Miao

本文共计584个文字,预计阅读时间需要3分钟。

如何构建基于Docker的多实例长尾词测试脚手架?

最近实现了一个功能,想进行测试。单纯的本地压测效果很难达到,最好是像生产部署一样,基于实际情况进行压测。没有那些机器的情况,采用Docker容器化部署就可以实现。

如何构建基于Docker的多实例长尾词测试脚手架?

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

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

整体脚手架目录:

. ├── 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

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

#!/bin/bash echo 'start' > a; echo "cur port: $server_port" >> a; # tail -f a; java -jar *.jar --server.port=${server_port}

nginx order.conf

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 order; } }

docker-compose.yml

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

关注我的公众号

唯有不断学习方能改变! -- Ryan Miao