version: "3.8"

services:

  drone:
    image: drone/drone:1.10-linux-amd64
    ports:
      -  "8080:80"
    volumes:
      - ./data/drone:/data
    environment:
      - DRONE_SERVER_HOST=drone
      - DRONE_SERVER_PROTO=http
      - DRONE_RPC_SECRET=secret
      - DRONE_DATABASE_DRIVER=postgres
      - DRONE_DATABASE_DATASOURCE=postgres://drone:drone@postgres:5432/drone?sslmode=disable
      - DRONE_GOGS_SERVER=http://gogs:3000
      - DRONE_AGENTS_ENABLED=true
    depends_on:
      - gogs
      - postgres
    restart: unless-stopped

  agent:
    image: drone/agent:1.10-linux-amd64
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - DRONE_RPC_PROTO=http
      - DRONE_RPC_HOST=drone
      - DRONE_RPC_SECRET=secret
      - DRONE_RUNNER_NAME=agent
      - DRONE_RUNNER_CAPACITY=2
    depends_on:
      - drone
    restart: unless-stopped

  postgres:
    image: postgres:13-alpine
    ports:
      - "5432:5432"
    volumes:
      - ./data/postgres:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=drone
      - POSTGRES_PASSWORD=drone
      - POSTGRES_DB=drone
    restart: unless-stopped

  gogs:
    image: gogs/gogs
    ports:
      - "2222:22"
      - "3000:3000"
    volumes:
      - ./data/gogs:/data
    restart: unless-stopped
