services:
  caddy:
    image: caddy:2.6.4-alpine@sha256:3f4414616d9141c4fbd9f66641d9b91a3b67833dd4145738c536dee584db5314
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443/udp"
      - "443:443/tcp"
      - "127.0.0.1:2019:2019"
    command: caddy reverse-proxy --from ${SERVER_HOST:?} --to http://drone
    volumes:
      - caddy_data:/data
      - caddy_config:/config
  drone:
    image: drone/drone:2.16.0@sha256:cc327f09ea02d676dee02091b88fbcff7e0d24f0b8841b220b3ba6f9df2e66a4
    restart: unless-stopped
    environment:
      DRONE_CRON_INTERVAL: 1m
      DRONE_GITEA_SERVER: ${DRONE_GITEA_SERVER:?}
      DRONE_GITEA_CLIENT_ID: ${DRONE_GITEA_CLIENT_ID:?}
      DRONE_GITEA_CLIENT_SECRET: ${DRONE_GITEA_CLIENT_SECRET:?}
      DRONE_RPC_SECRET: ${DRONE_RPC_SECRET:?}
      DRONE_SERVER_HOST: ${DRONE_SERVER_HOST:?}
      DRONE_SERVER_PROTO: ${DRONE_SERVER_PROTO:?}
      DRONE_USER_CREATE: ${DRONE_USER_CREATE:?}
    volumes:
      - drone_data_v2:/data
  runner:
    image: drone/drone-runner-docker:1.8.3@sha256:513891eb6c8b920c48266f6881402b9df5e3f7ec874a12cd87146ebfd1105bed
    restart: unless-stopped
    ports:
      - "127.0.0.1:3000:3000"
    environment:
      DRONE_RUNNER_NAME: default
      DRONE_RPC_PROTO: http
      DRONE_RPC_HOST: drone
      DRONE_RPC_SECRET: ${DRONE_RPC_SECRET:?}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
  system-runner:
    image: drone/drone-runner-docker:1.8.3@sha256:513891eb6c8b920c48266f6881402b9df5e3f7ec874a12cd87146ebfd1105bed
    restart: unless-stopped
    ports:
      - "127.0.0.1:5000:3000"
    environment:
      DRONE_RUNNER_NAME: system-runner
      DRONE_RUNNER_LABELS: instance:system
      DRONE_RPC_PROTO: http
      DRONE_RPC_HOST: drone
      DRONE_RPC_SECRET: ${DRONE_RPC_SECRET:?}
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
volumes:
  caddy_data:
  caddy_config:
  drone_data_v2: