背景:关注这种测试方法很久,却一直困于各种情况,没有启动。最近终于花了一些时间搭建了环境,并且运行出一个简单Demo。在此做一个记录。
环境:JDK1.8 + Gradle4.6 + Postgres9.6 + pact_broker
步骤:
网上有各种介绍介绍的文档,较为推荐的是下载Postgres和Pact-Broker的Docker镜像部署。因为公司限制,这里采用“混血”的方式。即,使用源码安装Postgres和配置,再安装的Pact-Broker镜像。
一、Postgres的安装
1. 这里,参考网上有位大神的源码安装和配置。https://blog.csdn.net/u010177412/article/details/82150207
需要注意的是:
1)如果不设置prefix,一般默认安装在/usr/local/pgsql目录下,可以用which postgresql查看。
2)一般安装完成就有用户postgres了,只是需要修改权限。
2. 配置。仍然参考上述blog。有以下几点根据自己环境修改。
1)新建目录/usr/local/pgsql/data和/usr/local/pgsql/log。用于存放postgres的数据和日志,要记得chown给postgres。
2)用root用户编辑/etc/profile,增加上面blog中所说的环境变量
3)执行到blog第4步时,需要首先切换为用户postgres
4)修改配置文件。因为postgresql默认关闭了远程连接,通过修改/user/local/pgsql/data/下的pg_hba.conf和postgresql.conf开启远程连接。
a.在pg_hba.conf中添加如下内容
b.在postgresql.conf中,注释掉原来的listen_addresses,添加红框中的内容
5)重启服务。# systemctl restart postgresql.service
6)关闭防火墙。
# systemctl stop firewalld.service -- 停止防火墙
# systemctl disable firewalld.service -- 关闭防火墙
3.创建数据库和用户。这里可以用客户端去连接,如Navicat,或者通过命令行创建。
# su postgres -- 切换用户
bash-4.2$ psql postgres -- 进入数据库
postgres=# create user pact_broker with password 'pact_broker';
postgres=# create database pact_broker with owner pact_broker;
postgres=# grant all privileges on database pact_broker to pact_broker;
二、安装pact-broker
1. 到官网中拉取最新的镜像https://hub.docker.com/r/dius/pact-broker/
# docker pull dius/pact-broker
# docker save -o pact-broker-latest.tar dius/pact-broker:latest
2.将拉取的镜像放到本地仓库
# docker load -i pact-broker-latest.tar
# docker images -- 查看镜像ID
3.拉起一个容器
# docker run --name pact-broker -e PACT_BROKER_DATABASE_USERNAME=pact_broker -e PACT_BROKER_DATABASE_PASSWORD=pact_broker -e PACT_BROKER_DATABASE_NAME=pact_broker -e PACT_BROKER_DATABASE_HOST=<宿主机的IP> -p 80:80(外部端口号:内部容器端口号) -d <镜像ID>
注意:
1)这里大写的参数前都要添加-e
2)参数的值即前面配置postgres的值
4.配置好以后访问宿主机IP和映射出来的端口号,可以看到如下页面
参考资料:
1. https://github.com/pact-foundation/pact_broker
2. https://hub.docker.com/r/dius/pact-broker/
3.https://github.com/DiUS/pact_broker-docker -- 这个版本好像新一些