drone のどっかのバージョンから server と runner が別イメージになった。
job "drone" {
datacenters = ["luis"]
type = "service"
update {
max_parallel = 1
min_healthy_time = "10s"
healthy_deadline = "3m"
progress_deadline = "10m"
auto_revert = true
canary = 0
}
group "drone-server" {
count = 1
task "drone-server" {
driver = "docker"
config {
image = "drone/drone:1"
port_map {
port = 80
}
volumes = [
"/var/lib/drone:/data"
]
}
env {
"DRONE_GITHUB_SERVER" = "https://github.com"
"DRONE_RPC_SECRET" = ""
"DRONE_GITHUB_CLIENT_ID" = ""
"DRONE_GITHUB_CLIENT_SECRET" = ""
"DRONE_SERVER_HOST" = ""
"DRONE_SERVER_PROTO" = "https"
"DRONE_USER_CREATE" = "username:luis,machine:false,admin:true,token:"
"DRONE_DATABASE_DRIVER" = "postgres"
"DRONE_DATABASE_DATASOURCE" = "postgres://@arjuna.db.elephantsql.com:5432/cduzmalf?sslmode=disable"
}
resources {
cpu = 100
memory = 128
network {
mbits = 100
port "port"{}
}
}
service {
name = "drone-server"
port = "port"
tags = [
"traefik.tags=service",
"traefik.frontend.rule=PathPrefixStrip:/drone",
]
check {
type = "tcp"
port = "port"
interval = "2s"
timeout = "2s"
}
}
}
}
group "drone-runner" {
count = 3
task "drone-runner" {
driver = "docker"
config {
image = "drone/drone-runner-docker:1"
port_map {
port = 3000
}
volumes = [
"/var/run/docker.sock:/var/run/docker.sock"
]
}
env {
"DRONE_RPC_PROTO" = "https"
"DRONE_RPC_HOST" = ""
"DRONE_RPC_SECRET" = ""
"DRONE_RUNNER_CAPACITY" = "4"
"DRONE_RUNNER_NAME" = "drone-runner"
}
resources {
cpu = 100
memory = 2048
network {
mbits = 100
port "port"{}
}
}
service {
name = "drone-runner"
port = "port"
check {
type = "tcp"
port = "port"
interval = "2s"
timeout = "2s"
}
}
}
}
}
DB を PostgreSQL にして、各リポジトリの設定を保存しておいて
ステートレスになるようになってる。
PostgreSQL はここが無料で使えてオススメ
www.elephantsql.com