Try to make supervisor less broken

This commit is contained in:
Radon Rosborough 2021-07-10 20:50:32 +00:00
parent 7f8402f52e
commit ea35395027
3 changed files with 19 additions and 5 deletions

View File

@ -21,7 +21,6 @@ function computeImageHashes() {
}
imageHashes[lang] = imageHash;
}
console.log(imageHashes);
return imageHashes;
}

View File

@ -2,11 +2,14 @@
Description=Riju online coding sandbox
Requires=docker.service
After=docker.service
StartLimitBurst=5
StartLimitIntervalSec=300
[Service]
Type=exec
ExecStart=riju-supervisor
Restart=always
RestartSec=5
Environment=AWS_REGION=$AWS_REGION
Environment=S3_BUCKET=$S3_BUCKET
Environment=SUPERVISOR_ACCESS_TOKEN=$SUPERVISOR_ACCESS_TOKEN

View File

@ -350,6 +350,7 @@ func (sv *supervisor) reload() error {
"-e", "ANALYTICS=1",
"--label", fmt.Sprintf("riju.deploy-config-hash=%s", deployCfgHash),
"--name", name,
"--restart=unless-stopped",
fmt.Sprintf("riju:%s", deployCfg.AppImageTag),
)
dockerRun.Stdout = os.Stdout
@ -387,7 +388,7 @@ func (sv *supervisor) reload() error {
return nil
}
var rijuContainerRegexp = regexp.MustCompile(`^([^:]+):(.+)$`)
var rijuContainerRegexp = regexp.MustCompile(`^([^|]+):([^|]+)\|([^|]+)$`)
func main() {
supervisorCfg := supervisorConfig{}
@ -424,7 +425,7 @@ func main() {
dockerContainerLs := exec.Command(
"docker", "container", "ls", "-a",
"--format", "{{ .Names }}:{{ .CreatedAt }}",
"--format", "{{ .Names }}|{{ .CreatedAt }}|{{ .State }}",
)
dockerContainerLs.Stderr = os.Stderr
out, err := dockerContainerLs.Output()
@ -444,6 +445,17 @@ func main() {
if err != nil {
continue
}
running := match[3] == "running"
if !running {
log.Printf("deleting container %s as it is stopped\n", name)
dockerRm := exec.Command("docker", "rm", "-f", name)
dockerRm.Stdout = os.Stdout
dockerRm.Stderr = os.Stderr
if err := dockerRm.Run(); err != nil {
log.Fatalln(err)
}
continue
}
if name == blueName {
blueRunningSince = &created
continue
@ -460,7 +472,7 @@ func main() {
if blueRunningSince == nil && greenRunningSince == nil {
log.Println("did not detect any existing containers")
isGreen = false
isRunning = true
isRunning = false
} else if blueRunningSince != nil && greenRunningSince == nil {
log.Println("detected existing blue container")
isGreen = false
@ -501,7 +513,7 @@ func main() {
name = blueName
}
dockerInspect := exec.Command(
"docker", "inspect", name, "-f",
"docker", "container", "inspect", name, "-f",
`{{ index .Config.Labels "riju.deploy-config-hash" }}`,
)
dockerInspect.Stderr = os.Stderr