LuckyFrame是一款开源的自动化测试平台,支持多用户、分布式测试,功能覆盖了接口自动化、WEB UI自动化、APP自动化,通过关键字驱动编写自动化用例,很大程度上解决了测试人员代码基础弱、用例开发工作量大的问题。
本文讲解,如何利用docker容器,实现LuckyFrame测试平台快速部署。
1、环境准备
- jdk安装,建议8以上版本,参照:安装jdk新版本
- docker安装,参照:安装Docker环境
- 下载luckyframe编译包3.X版本,地址:http://www.luckyframe.cn/book/yhsc/hjzb-19.html
2、mysql安装
LuckyFrame使用的mysql数据库,建议5.7以上版本,参照以下步骤安装:
#1.搭建数据库(使用docker安装mysql):
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
#2.进入mysql容器:
docker exec -it mysql bash
#3.使用账号密码登录
mysql -uroot -p123456
#4.创建数据库:
CREATE DATABASE luckyframe CHARACTER SET utf8;
执行 docker inspect mysql 命令,查看容器的IP地址:

在docker容器运行的服务器上,通过查询的IP地址和容器暴露端口3306可访问mysql。
3、LuckyFrame服务端安装
在百度网盘下载LuckyFrame编译包,如3.4版本,修改上传LuckyFrameWeb.jar文件到docker容器运行的服务器上,参照以下步骤安装:
- 修改LuckyFrameWeb.jar中的配置文件,操作参照:jdk工具解压/打包jar包,配置文件application-druid.yml内容如下:
# 数据源配置
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driverClassName: com.mysql.cj.jdbc.Driver
druid:
# 主库数据源
master:
url: jdbc:mysql://172.17.0.3:3306/luckyframe?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
username: root
password: 123456
# 从库数据源
slave:
# 从数据源开关/默认关闭
enabled: false
url:
username:
password:
# 初始连接数
initialSize: 5
# 最小连接池数量
minIdle: 10
# 最大连接池数量
maxActive: 20
# 配置获取连接等待超时的时间
maxWait: 60000
# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
timeBetweenEvictionRunsMillis: 60000
# 配置一个连接在池中最小生存的时间,单位是毫秒
minEvictableIdleTimeMillis: 300000
# 配置一个连接在池中最大生存的时间,单位是毫秒
maxEvictableIdleTimeMillis: 900000
# 配置检测连接是否有效
validationQuery: SELECT 1 FROM DUAL
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
statViewServlet:
enabled: true
url-pattern: /monitor/druid/*
filter:
stat:
# 慢SQL记录
log-slow-sql: true
slow-sql-millis: 2000
merge-sql: true
wall:
config:
multi-statement-allow: true
- 在LuckyFrameWeb.jar同一目录,新建Dockerfile文件,编写内容
#使用jdk1.8原生镜像,需确保服务器可以连外网
FROM java:8
#创建工作目录/app
WORKDIR /app
#拷贝文件到容器工作目录
ADD LuckyFrameWeb.jar /app/LuckyFrameWeb.jar
#设置容器内部端口
EXPOSE 80 7070
#设置java内存
ENV JAVA_OPTS="-server -Xms1024m -Xmx1024m"
#设置启动命令
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/LuckyFrameWeb.jar" ]
- 构建服务端Docker镜像
[root@pilot-operator luckyFrame]$ docker build -t luckyframe:3.4.1 . --rm
Sending build context to Docker daemon 869.2MB
Step 1/6 : FROM java:8
---> d23bdf5b1b1b
Step 2/6 : WORKDIR /app
---> Using cache
---> 67c43c48348c
Step 3/6 : ADD LuckyFrameWeb.jar /app/LuckyFrameWeb.jar
---> Using cache
---> 1f0e4d5254fc
Step 4/6 : EXPOSE 80
---> Using cache
---> a94202296121
Step 5/6 : ENV JAVA_OPTS="-server -Xms1024m -Xmx1024m"
---> Using cache
---> 3656d3d9716f
Step 6/6 : ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app/app.jar"]
---> Running in 9527b71ecfa8
Removing intermediate container 9527b71ecfa8
---> c3bc9f73410e
Successfully built c3bc9f73410e
Successfully tagged luckyframe:3.4.1
看到以上信息,表示luckyframe:3.4.1版本的镜像构建成功。注意:镜像名称不能有大写字母。
- 启动服务端容器
#启动容器
[root@pilot-operator ~]$ docker run -p 8090:80 -p 8070 7070 --name luckyframe -d --rm luckyframe:3.4.1
执行 docker inspect mysql 命令,查看容器的IP地址:

在docker容器运行的服务器上,通过curl http://172.17.0.2/login可访问,在docker容器运行服务器外访问,浏览器打开链接 http://服务器IP:8090/login,输入用户名admin,密码admin,点击登录。

4、客户端安装
百度网盘下载LuckyFrame客户端,为LuckyFrameClient.zip压缩文件。客户端可以运行在有jdk1.8环境的Linux或者Windows机器上,需确保客户端机器能连通服务器。
- 解压客户端压缩包,得到LuckyFrameClient文件夹。
- 修改客户端sys_config.properties配置文件,配置server.web.ip、server.web.port和netty.server.port参数:
#===============================系统配置=====================================
#=====仅支持客户本地文件配置,不支持服务端同步配置项======
server.web.ip=10.15.4.100
server.web.port=8090
#对应服务端项目的contextPath 默认路径 /
server.web.path=/
#==================客户端配置密钥========================
#=====仅支持客户本地文件配置,不支持服务端同步配置项======
client.verison=3.4
client.name=测试客户端
client.config.privateKey=MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBAJp2aRx6nTkGZndpYfvZpvyLDzEPhditeZ7JLAGApBjiaEejYytPx8qI1obQ8L8nLT2Kc9zME+p/8g8guUTv26OClzzhsedHbu70gfuQmXKguI9Eag36hBtYlqSZhPAaR0bjPVF73GgqLhbDVZKGS8mykzA5a2TB/C5vnOS9C1JZAgMBAAECgYBNTjYNKtDFWY6u9O81PRl2C6LuyvYSG8Bi2AxONDPswGOwdvWLF8LGevXjQ286PEFIK6MRPpI5Kw/awmX3OpSR10nAzLHo7KU03+1+71EpGcGt0OAudDG+Qzzz10rjyoBwV21d8utoJmy4m5MLbp7yxxZ0caGNfkJMj7QJyxsQAQJBAOtTwyqdGbhLle0rD/9WhK5huFBAaXCw21mJK/wkByVFk9ynHN1P0e3fgS4S2KOyWGEwMgfaxRxvn+Tmj8sQLkkCQQCoCBhihIZj0epYvdQdf63sgrzVlUr3d3IIlKio4JLfvo4gFGpQjV/mOlyS7AGNWf5iDFzJvpXoXET5GYkmpEORAkA784LtAEjlIpx3Z1kT+76hjlOeXkp+Yw/+p2uFOMh5PliFBi3cU9FvgFkwm6yFR5IscFLOnXVJ4UYi0nofiWfBAkBMZvnneci9hIog9ZeIHjEP9FY2a16d7RLNsgKKXyqJT9TB42Z/3/h1751+NI90HTJclLBwDxeMgr/d3+2Lw27xAkBdQqmrWTAmHPGS48CZ/VYu9repRhDmV+8nsWtX1fdU410kcfYgib7WX9Y22v4vGQrVt72waBvvEvbjWjXH+Ael
client.config.publicKey=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCadmkcep05BmZ3aWH72ab8iw8xD4XYrXmeySwBgKQY4mhHo2MrT8fKiNaG0PC/Jy09inPczBPqf/IPILlE79ujgpc84bHnR27u9IH7kJlyoLiPRGoN+oQbWJakmYTwGkdG4z1Re9xoKi4Ww1WShkvJspMwOWtkwfwub5zkvQtSWQIDAQAB
#===============================netty配置=====================================
#=====仅支持客户本地文件配置,不支持服务端同步配置项======
#netty.model为netty模式开启 例:true false 注意:netty.host为空时,默认使用IP
netty.model=true
netty.server.port=8070
netty.host=
# netty编码格式
netty.encoder=GBK
# netty解码格式
netty.decoder=UTF_8
#================================ 邮件=======================================
#smtp邮件IP 例:smtp.qq.com
mail.smtp.ip=smtp.qq.com
#smtp邮件端口 例:25
mail.smtp.port=25
#smtp邮件ssl连接开启 例:true false
mail.smtp.ssl.enable=false
#smtp邮件用户名
mail.smtp.username=xxxxx@xx.com
#smtp邮件用户密码
mail.smtp.password=xxxxx
#邮件模板路径
mail.freemarker.template=/email_template/
#==================Jenkins API配置========================
#jenkins访问地址,示例: http://192.168.100.100:8080/jenkins/
jenkins.url=http://localhost
#jenkins用户名
jenkins.username=test
#jenkins密码
jenkins.password=test1
#==================Web Driver配置========================
#是否高亮显示 true打开 false关闭
webdriver.highlight=false
- 客户端启动,windows双击start_service.cmd,linux执行./start_service.sh命令。
网友评论