docker安装drone并部署CI、CD环境

/ 技术相关 / 0 条评论 / 570浏览

一、拉取 drone服务器镜像

首先从dockerhub pull最新的drone镜像。

docker pull drone/drone

二、启动drone服务器容器与参数配置

在服务器或者本机,启动drone容器,我们以gitea来作为例子讲解

docker run 
-p 20080:80 
-p 20443:443 
--name drone 
-v /opt/drone/data:/data 
-e DRONE_GITEA_SERVER=https://gitea.icusu.com 
-e DRONE_GITEA_CLIENT_ID=bb8d5847-68acba02c2c1 
-e DRONE_GITEA_CLIENT_SECRET=dqT5n44H4oe1hWobeFLI4xRAEqLv 
-e DRONE_RPC_SECRET= f5b6a467e8d8abf60abe50 
-e DRONE_SERVER_HOST=drone.icusu.com 
-e DRONE_SERVER_PROTO=https 
-e DRONE_USER_CREATE=username:tinnit-us-go,admin:true 
--privileged=true -d --restart=on-failure:3 
drone/drone

::: tip 参数详解 在docker参数配置中 : 冒号前面的为你自己服务器的数据 冒号后面的为docker容器的数据参数 opt/drone/data:/dataopt/drone/data为你自己服务器的路径映射到docker中/data的路径。 p 端口映射 你服务器或者本地的端口:容器端口 name 容器名称 v 挂载目录容器路径 DRONE_GITEA_SERVER 为你git服务器的url地址 DRONE_GITEA_CLIENT_ID 为你git中设置的OAuth2秘钥信息,对应下图中的客户端的ID DRONE_GITEA_CLIENT_SECRET 对应下图中的客户端密钥 DRONE_RPC_SECRET 这个和drone runner交互用的密钥,最好使用openssl生成,打开终端输入openssl rand -hex 16 DRONE_SERVER_HOST 当前drone服务器的域名或者ip:端口 DRONE_SERVER_PROTO 对应的协议 https或者http,若是ip则写http DRONE_USER_CREATE 管理员用户名,建议填不然后面目录挂载会报权限不足错误 privileged privileged启动的容器,可以看到很多host上的设备,并且可以执⾏mount restart=on-failure:3 失败时启动,最多尝试3次 :::

::: tip 注意事项 重定向地址为你的drone服务器地址,如果提示不能授权,可以加上/login再试一下。 :::

三、启动目标机器runner

drone runner介绍

Drone runner是和drone服务器搭配的部署应用服务,drone服务器用来中央调配,而runner通过不断轮询drone服务器的请求,若发现drone服务器下达构建部署任务,runner则在你要部署的机器上执行任务。drone服务器是中央调控,而runner就是执行者,也就是说runner需要部署在你自己真正跑你自己应用的服务器。

例如,drone服务器部署在A服务器上,那runner可以部署在B,C,D服务器上,这样当drone服务器下达部署命令时,B,C,D服务器则将你的应用进行部署,当然如果你只有一台服务器,那drone和runner都可以部署在上面。

拉取 runner 镜像

docker pull drone/drone-runner-docker

创建 runner 镜像

docker run 
-p 23000:3000 
--name drone-runner 
-v /var/run/docker.sock:/var/run/docker.sock 
-e DRONE_RPC_PROTO=https 
-e DRONE_RPC_HOST=drone.icusu.com 
-e DRONE_RPC_SECRET=f5b6a467da289d716be8dansf60abe50 
-e DRONE_RUNNER_CAPACITY=3 
-e DRONE_RUNNER_NAME=drone-runner 
-e DRONE_RUNNER_LABELS=name:my-runner 
--privileged=true -d --restart=on-failure:3 
drone/drone-runner-docker

::: tip 参数解析 DRONE_RPC_PROTO 中央(Drone)服务器(上一步部署的镜像)的协议,如果是ip模式则写http DRONE_RPC_HOST drone服务器域名,也可以ip:端口 DRONE_RPC_SECRET 上一步生成的通讯秘钥 DRONE_RUNNER_CAPACITY 同时可执行的管道命令,既可同时部署的任务 DRONE_RUNNER_NAME 当前runner名称 DRONE_RUNNER_LABELS 用于区别不同的runner,可用来中央服务器指定runner执行任务用 :::

验证服务

运行命令

docker logs -f drone-runner

看到如下日志,则表示成功

time="2022-03-09T17:31:53Z" level=info msg="starting the server" addr=":3000"
time="2022-03-09T17:31:53Z" level=info msg="successfully pinged the remote server"

总结

至此,你的drone cicd环境已经部署成功,后续文章会根据,python和java两种语言来讲解如何配置.drone.yml文件。 python语言之配置.drone.ymljava语言之配置.drone.yml