Skip to content

已阅读

0%
通过Docker Compose部署Drone+Runner

通过Docker Compose部署Drone+Runner

Docker

通过Docker Compose部署Drone+Runner链接gitea

标签:
Docker Linux Docker Compose Drone
发布于 2022年8月20日

参考资料

json
{
  "title": "rone Docs",
  "desc": "Drone is a self-service Continuous Integration platform for busy development teams.",
  "logo": "https://docs.drone.io/logo.svg",
  "link": "https://docs.drone.io/",
  "background": "#fff"
}
json
{
  "title": "Drone Runner",
  "desc": "Drone is a self-service Continuous Integration platform for busy development teams.",
  "logo": "https://docs.drone.io/logo.svg",
  "link": "https://docs.drone.io/runner/docker/installation/linux/",
  "background": "#fff"
}
json
{
  "title": "Docker Compose",
  "desc": "Compose 是用于定义和运行多容器 Docker 应用程序的工具。使用 Compose,您可以使用 YAML 文件来配置应用程序的服务。然后,使用单个命令,从配置中创建并启动所有服务.",
  "logo": "/assets/svg/common/docker.svg",
  "link": "https://docs.docker.com/reference/",
  "background": "#fff"
}

先决条件

  1. 服务器已部署好gitea

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

  3. 创建共享密钥

    shell
        openssl rand -hex 16
        bea26a2221fd8090ea38720fc445eca6

编写Docker Compose.yml文件,文件内容如下👇

yml
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:设置运行器的名称
  • 其余环境变量可以参考如下

执行命令

shell
docker compose up -d

查看运行情况

shell
docker logs drone
docker logs runner
docker ps -a

访问drone

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

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

可能会遇到的问题

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

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

Last updated: