通过docker-compose部署Drone+Runner

参考资料

Drone Docs
Drone is a self-service Continuous Integration platform for busy development teams.
Drone Runner
Drone is a self-service Continuous Integration platform for busy development teams.
Docker Compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务

先决条件

  1. 服务器已部署好gitea

  2. 根据官方指引,打开gitea创建 OAuth 应用程序,创建好后如下重定向url请写自己的地址,该地址可以访问到droe
    deploy-drone-2022-08-19-10-51-15

  3. 创建共享密钥

    1
    2
    openssl rand -hex 16
    bea26a2221fd8090ea38720fc445eca6

编写docker-compose.yml文件,文件内容如下👇

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
version: "3"

networks:
my-net:
external: true

services:
server:
image: drone/drone:2
container_name: drone
environment:
- TZ=Asia/Shanghai
- DRONE_DATABASE_DRIVER=mysql
- DRONE_DATABASE_DATASOURCE=drone:okZ1c510^*My7Ux@tcp(mysql:3306)/drone?parseTime=true
- DRONE_USER_CREATE=username:system,admin:true
- DRONE_GITEA_SERVER=可以访问到gitea的地址
- DRONE_GITEA_CLIENT_ID=3e66e3f7-5fd4-4b1a-ad8e-4675864c08f4
- DRONE_GITEA_CLIENT_SECRET=6Y2uKOZSqQ6Em4AJXGc7t2kl6EW0BWf6KpgeKwbzsLkI
- DRONE_RPC_SECRET=84c7dd7c79eacd089791beabbd684fb2
- DRONE_SERVER_HOST=可以访问到的地址
- DRONE_SERVER_PROTO=http
restart: always
networks:
- my-net
ports:
- "8080:80"
- "4443:443"

runner:
image: drone/drone-runner-docker:1
container_name: runner
environment:
- DRONE_RPC_PROTO=http
- DRONE_RPC_HOST=可以访问到的地址
- DRONE_RPC_SECRET=84c7dd7c79eacd089791beabbd684fb2
- DRONE_RUNNER_CAPACITY=2
- DRONE_RUNNER_NAME=my-first-runner
restart: always
networks:
- my-net
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- server

解释

  • my-net提前构建的网络的名称,external: true使用外部网络,也就是说使用我之前创建好的网络
  • drone
    • DRONE_DATABASE_DRIVER=mysql:链接数据库类型。
    • DRONE_DATABASE_DATASOURCE=drone:okZ1c510^*My7Ux@tcp(mysql:3306)/drone?parseTime=true:我的mysql也安装在docker该my-net网络下使用mysql:3306可以访问,非此方法请填写完整访问路径。
    • ※※DRONE_USER_CREATE=username:system,admin:true:设置admin账户,请与登录gitea登录账号相同。
      deploy-drone-2022-08-19-11-09-34
    • DRONE_GITEA_SERVER=可以访问到gitea的地址:访问gitea的地址。
    • DRONE_GITEA_CLIENT_ID=3e66e3f7-5fd4-4b1a-ad8e-4675864c08f4:gitea生产客户端id。
    • DRONE_GITEA_CLIENT_SECRET=6Y2uKOZSqQ6Em4AJXGc7t2kl6EW0BWf6KpgeKwbzsLkI:gitea生成的客户端密钥。
    • DRONE_RPC_SECRET=84c7dd7c79eacd089791beabbd684fb2openssl rand -hex 16生成的字符串。
    • DRONE_SERVER_HOST=可以访问到的地址:访问drone的地址。
    • DRONE_SERVER_PROTO=http:请求类型。
  • drone-runner
    • DRONE_RPC_PROTO=http:请求类型。
    • DRONE_RPC_HOST=可以访问到的地址:请求drone的地址
    • DRONE_RPC_SECRET=84c7dd7c79eacd089791beabbd684fb2openssl rand -hex 16生成的字符串。
    • DRONE_RUNNER_CAPACITY=2:限制运行器可以执行的并发管线的数量
    • DRONE_RUNNER_NAME=my-first-runner:设置运行器的名称
  • 其余环境变量可以参考如下

执行命令

1
docker compose up -d

查看运行情况

1
2
3
docker logs drone
docker logs runner
docker ps -a

访问drone

deploy-drone-2022-08-19-11-17-19

如同所示点击continue进行登录,登陆成功后则搭建成功!

可能会遇到的问题

  1. 访问地址填写错误
  2. 未设置admin账户

解决方法,打开浏览器,输入对应地址测试是否能访问,停止并删除容器,从新构建。查看 docker logs 展示的日志,判断问题。


通过docker-compose部署Drone+Runner
https://crudclass.github.io/2022/08/20/docker/Docker-Compose/deploy-drone/
作者
Zero
发布于
星期六, 八月 20日 2022, 3:56 下午
许可协议