services:
  caddy:
    image: caddy:2.6.4-alpine@sha256:4dfec6c3b22c36b63ea4a3633c7cdbdaa9926d1324c27db2b0e2b70ef9cd105a
    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.17.0@sha256:7a5be0c8824d405ae838f2ab7cbaff021873a63415ecb5004b333d0ffe0388ea
    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: