This guide deploys Drone server and a Docker runner with Docker Compose.
Create .env in your deployment directory:
DRONE_SERVER_HOST=ci.example.com
DRONE_SERVER_PROTO=https
DRONE_RPC_SECRET=replace-with-long-random-secret
DRONE_GITHUB_CLIENT_ID=replace-me
DRONE_GITHUB_CLIENT_SECRET=replace-me
DRONE_RPC_HOST=drone
DRONE_RPC_PROTO=http
DRONE_RUNNER_CAPACITY=2
DRONE_RUNNER_NAME=runner-01
Adjust OAuth variables for your provider if not using GitHub.
services:
drone:
image: drone/drone:2
container_name: drone
restart: unless-stopped
ports:
- "8080:80"
volumes:
- drone_data:/data
environment:
- DRONE_SERVER_HOST=${DRONE_SERVER_HOST}
- DRONE_SERVER_PROTO=${DRONE_SERVER_PROTO}
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
- DRONE_GITHUB_CLIENT_ID=${DRONE_GITHUB_CLIENT_ID}
- DRONE_GITHUB_CLIENT_SECRET=${DRONE_GITHUB_CLIENT_SECRET}
runner:
image: drone/drone-runner-docker:1
container_name: drone-runner
restart: unless-stopped
depends_on:
- drone
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
- DRONE_RPC_HOST=${DRONE_RPC_HOST}
- DRONE_RPC_PROTO=${DRONE_RPC_PROTO}
- DRONE_RPC_SECRET=${DRONE_RPC_SECRET}
- DRONE_RUNNER_CAPACITY=${DRONE_RUNNER_CAPACITY}
- DRONE_RUNNER_NAME=${DRONE_RUNNER_NAME}
volumes:
drone_data:
docker compose up -d
http://<host>:8080 or your TLS endpoint