Postgres搭建
考虑到Drone和Sonarqube等都需要借助Postgres存储,为了保证CI服务的高效的工作,将考虑独立其中依赖的数据库,避免在繁忙时占用过多资源从而影响整体CI的速度。
一、 CentOS设置
1. 更换阿里源
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
2. 安装网络工具
yum install net-tools -y
3. 使用阿里NTP服务
yum install chrony -y
sed -i "/server/d" /etc/chrony.conf
vi /etc/chrony.conf 增加 server ntp.aliyun.com iburst
systemctl restart chronyd
chronyc tracking
4. 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
二、 安装Docker-CE
1. 安装依赖包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
2. 设置仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3. 安装Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io
4. 启动并设置自启动
sudo systemctl start docker
sudo systemctl enable docker
5. 设置加速器
vi /etc/docker/daemon.json 添加如下内容
{
"registry-mirrors": ["https://harbor.vip56.cn"]
}
sudo systemctl restart docker
三、 安装Postgres
1. 下载镜像包
docker pull postgres:10.11
如果下载比较慢,可以利用公司内部的仓库harbor.vip56.cn/common/postgres:10.11
。
2. 启动指令
docker run -d -p 5432:5432 -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=123456 -v /my/own/datadir:/var/lib/postgresql/data --name postgres --restart=always postgres:10.11
3. 使用Web ui
具体方式可以参考本文档
docker run -d -p 80:80 -e PGADMIN_DEFAULT_EMAIL=admin@domain.com -e PGADMIN_DEFAULT_PASSWORD=sino5802486 --name pgadmin --restart=always dpage/pgadmin4:4.15
四、 Drone改用pg
由于Drone默认使用SQLite进行存储,在部分场景下并不能提供有效的支持,为此我们需要将其存储修改为其他方式。
1. 迁移数据
由于基于SQLite进行存储了一定的数据,为了保证数据0丢失,这里我们需要借助其他工具进行迁移,这里可以参考pgloader进行迁移,主要指令如下:
pgloader ./test/sqlite/sqlite.db postgresql:///newdb
注意,由于默认官网的可能存在部分设置问题这里可用使用优化过的镜像dimitri/pgloader:ccl.latest
,然后进入容器中执行如下示例的语句:
pgloader /data/database.sqlite postgresql://[username]:[password]@[host]:5432/drone?sslmode=disable
2. 调整Drone配置
由于Drone采用Docker进行部署,所以我们需要增加额外的环境变量即可使用:
DRONE_DATABASE_DRIVER=postgres
DRONE_DATABASE_DATASOURCE=postgres://root:password@1.2.3.4:5432/postgres?sslmode=disable
完成以上配置后启动Drone服务,可以看到对应的数据库已经采用postgres了。
五、 SonarQube存储修改
由于SonarQube本身就已经使用postgres存储了,所以数据可以直接进行迁移,完成迁移后对应修改如下:
vi /conf/sonar.properties
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
sonar.jdbc.url=jdbc:postgresql://localhost/sonar
完成后重启服务即可