docker部署

docker部署

目前使用 docker-compose 的方式应该是主流的方式

docker-compose.yml

注解:

  1. registry.wait 为离线的私有仓库,
    git.services.wait 为离线的 gitea 仓库

  2. 用户 master 和 slave 通信的 DRONE_RPC_SECRET 是随便生成的;

  3. Gitea OAuth 需要在 gitea 上配置一个应用和返回时的地址

  4. 特别注意的是 drone 没有账号体系,使用的是 gitea 里面的账号;
    这里指定管理员时,需要指定 gitea 的用户登录帐号, 注意不是别名或邮箱地址。

  5. 本例使用了 traefik 作为统一的入口

  6. 存储和网络都是 external 类型的, 所以需要手动创建

version: '3'

services:

  drone-server:
    image: registry.wait/cwx/drone/drone:2.16.0
    # ports:
    #   - 80:80
    #   - 443:443

    restart: unless-stopped
    networks:
      - services
    # privileged: true
    environment:

      # GITEA 配置(OAuth2)

      # Gitea OAuth 客户端 ID
      - DRONE_GITEA_CLIENT_ID=3dee43ca-55c2-4878-b912-5fe892cc6f4b
      # Gitea OAuth 客户端密钥
      - DRONE_GITEA_CLIENT_SECRET=gto_rkxuxkaneyrxpuji5i3hwvunhlzd3sfhhifhn4z5qj23u6hz2nu3
      # Gitea 服务器地址
      - DRONE_GITEA_SERVER=https://git.services.wait
      # - DRONE_GITEA_SERVER=http://10.2.1.5:3000

      # 和 runner 通信的 rpc 密钥
      - DRONE_RPC_SECRET=12e42a821c41754db091b62d899edff7

      # drone server 的服务地址; IP或域名
      - DRONE_SERVER_HOST=drone.services.wait

      # - DRONE_TLS_AUTOCERT=false

      - DRONE_SERVER_PROTO=https

      # - DRONE_SERVER_PROTO=https
      # - DRONE_TLS_CERT=/certs/services.wait.pem
      # - DRONE_TLS_KEY=/certs/services.wait-key.pem

      - DRONE_LOGS_DEBUG=true

      # - DRONE_GIT_ALWAYS_AUTH=false

      # 创建管理员账户, 这里对应为 gitee 的用户名(也就是登录的账号,不是昵称)
      # 也就是说 这个外部帐号会作为管理员
      # 说明, 这里应该是 gitee 内的登录帐号, 不是别名或邮箱
      - DRONE_USER_CREATE=username:chenwx,admin:true

      # 数据库默认是 sqlite
      # - DRONE_DATABASE_DRIVER=mysql
      # - DRONE_DATABASE_DATASOURCE=root:password@tcp(1.2.3.4:3306)/drone?parseTime=true
    volumes:
      - drone_data:/data
      # - ./ssl/services.wait.pem:/certs/services.wait.pem:ro
      # - ./ssl/services.wait-key.pem:/certs/services.wait-key.pem:ro
      - ./ssl/cwxCA.pem:/etc/ssl/certs/cwxCA.pem:ro
    labels:
      - "service_name=drone"
      - "traefik.enable=true"
      - "traefik.http.routers.droneHttps.entrypoints=https"
      - "traefik.http.routers.droneHttps.service=droneServer"
      - "traefik.http.routers.droneHttps.rule=Host(`drone.services.wait`)"
      - "traefik.http.routers.droneHttps.tls=true"
      - "traefik.http.services.droneServer.loadbalancer.server.port=80"
    logging:
      options:
        labels: "service_name"


  drone-docker-runner:
    # container_name: drone-runner
    image: registry.wait/cwx/drone/drone-runner-docker:1.8.3
    # restart: always
    # privileged: true
    networks:
      - services
    environment:

      # 用于连接到 Drone 服务器的协议; http 或 https
      # - DRONE_RPC_PROTO=https
      - DRONE_RPC_PROTO=https

      # 用于连接到 Drone 服务器的主机名
      - DRONE_RPC_HOST=drone.services.wait

      # server rpc key
      - DRONE_RPC_SECRET=12e42a821c41754db091b62d899edff7

      # 限制运行程序可以执行的并发管道数
      - DRONE_RUNNER_CAPACITY=2

      # 自定义 docker runner 节点名称
      - DRONE_RUNNER_NAME=docker-runner-1
      # - DRONE_RUNNER_NETWORKS=drone_default

      # - DRONE_DEBUG=true                      # 调试相关, 部署的时候建议先打开
      # - DRONE_LOGS_DEBUG=true                 # 调试相关, 部署的时候建议先打开
      # - DRONE_LOGS_TRACE=true                 # 调试相关, 部署的时候建议先打开
      - TZ=Asia/Shanghai

    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /home/wait/data/ca/cwxCA.pem:/etc/ssl/certs/cwxCA.pem:ro


volumes:
  drone_data:
    external: true


networks:
  services:
    external: true
最后更新于