一套基于docker的多实例部署测试脚手架
2023-06-13 09:12:09 时间
最近在写下单功能实现,想要压测下。单纯压测本地很难达到效果,最好是像生产部署一样,基于实际情况进行压测。手头没那么机器的情况下,采用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 http://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
相关文章
- docker容器获取宿主机IP「建议收藏」
- Docker的基本使用——常用docker命令
- docker安装rabbitmq镜像
- 渗透测试|手把手教你搭建docker漏洞测试靶场
- Gitlab CI/CD 实践三:Docker 安装 Gitlab Runner
- docker-compose强制wordpress并发布外网
- 发布自己的镜像至Docker Hub中
- Docker安装ElasticSearch: 7.7.1
- 【Docker】Docker常见命令汇总
- 【Docker】基于Rancher快速部署docker容器管理平台
- Docker服务的删除本地镜像命令(docker rmi 镜像id)
- Docker查看容器命令(docker ps)
- Docker关闭容器命令(docker stop)
- centos下安装运行jupyter及docker方式安装
- docker使用笔记VII -- Scrapy
- 【Docker 系列】docker 学习 二,Docker 的常用命令
- 【Docker 系列】docker 学习 五,容器数据卷
- 【Docker 系列】docker 学习十,Compose 编写规则及wp 实战
- Windows系统安装Docker遇到error during connect: In the default daemon configuration on Windows, the docker
- docker进程命令
- Docker容器的重启策略及docker run的–restart选项详解程序员
- 使用 Docker 快速搭建 Redis 服务器(dockerredis)