I have deployed drone on docker swarm with following configuration.
version: ‘3.5’
networks:
drone:
driver: overlay
attachable: true
traefik_public:
external: true
driver: overlay
volumes:
drone-data:
external: true
services:
drone-server:
image: “drone/drone:1.1.0”
logging:
driver: json-file
options:
max-size: “10m”
max-file: “3”
networks:
- traefik_public
- drone
environment:
- DRONE_SERVER_HOST=drone.domain.in
- DRONE_SERVER_PROTO=https
- DRONE_TLS_AUTOCERT=false
- DRONE_AGENTS_ENABLED=true
- DRONE_BITBUCKET_CLIENT_ID=xxxxx
- DRONE_BITBUCKET_CLIENT_SECRET=xxxxxx
- DRONE_RPC_SECRET=d859a7aa9453f47ff567939024b0f7c2
- DRONE_DATABASE_DRIVER=mysql
- DRONE_DATABASE_DATASOURCE=xxxx:xxxxx@tcp(xx.xx.xx.xx:3306)/drone?parseTime=true
- DRONE_LOGS_DEBUG=true
- DRONE_USER_CREATE=cccccc:octocat,machine:false,admin:true,token:55f24eb3d61ef6ac5e83d550178638dc
volumes:
- drone-data:/var/lib/drone/
deploy:
placement:
constraints:
- node.role==manager
replicas: 1
labels:
- “traefik.backend=drone-server”
- “traefik.frontend.rule=Host:drone.domain.in”
- “traefik.frontend.entryPoints=http”
- “traefik.port=80”
- “traefik.docker.network=traefik_public”
- “traefik.enable=true”
endpoint_mode: dnsrr
mode: replicated
drone-agent:
image: “drone/agent:1.1.0”
logging:
driver: json-file
options:
max-size: “10m”
max-file: “3”
networks:
- drone
environment:
- DRONE_PLUGIN_PULL=true
- DRONE_LOGS_DEBUG=true
- DRONE_RPC_SERVER=http://drone-server
- DRONE_RPC_SECRET=d859a7aa9453f47ff567939024b0f7c2
- DRONE_RUNNER_CAPACITY=3
depends_on:
- drone-server
volumes:
- /var/run/docker.sock:/var/run/docker.sock
deploy:
replicas: 3
mode: replicated
Agent Logs :
{“arch”:“amd64”,“level”:“debug”,“machine”:“002aa291582e”,“msg”:“runner: polling queue”,“os”:“linux”,“time”:“2019-04-28T19:43:13Z”}
{“arch”:“amd64”,“level”:“debug”,“machine”:“002aa291582e”,“msg”:“runner: polling queue”,“os”:“linux”,“time”:“2019-04-28T19:43:14Z”}
Server Logs:
{“level”:“info”,“msg”:“main: internal scheduler enabled”,“time”:“2019-04-28T19:42:04Z”}
{“build.limit”:15000,“expires”:“0001-01-01T00:00:00Z”,“kind”:“trial”,“level”:“debug”,“msg”:“main: license loaded”,“repo.limit”:0,“time”:“2019-04-28T19:42:04Z”,“user.limit”:0}
{“acme”:false,“host”:“drone.domain.in”,“level”:“info”,“msg”:“starting the http server”,“port”:":80",“proto”:“https”,“time”:“2019-04-28T19:42:04Z”,“url”:“https://drone.domain.in”}
{“interval”:“30m0s”,“level”:“info”,“msg”:“starting the cron scheduler”,“time”:“2019-04-28T19:42:04Z”}