fix: reconcile instance status with Docker on list, add IsContainerRunning

This commit is contained in:
2026-04-05 02:42:31 +03:00
parent 12d78bec99
commit 4ff8daafc4
2 changed files with 30 additions and 0 deletions
+21
View File
@@ -33,6 +33,27 @@ func (s *Server) listInstances(w http.ResponseWriter, r *http.Request) {
respondError(w, http.StatusInternalServerError, "internal server error")
return
}
// Reconcile instance statuses with Docker's actual state.
ctx := r.Context()
for i, inst := range instances {
if inst.ContainerID == "" || inst.Status == "removing" {
continue
}
running, err := s.docker.IsContainerRunning(ctx, inst.ContainerID)
if err != nil {
continue // Docker unreachable, keep stored status.
}
actualStatus := "stopped"
if running {
actualStatus = "running"
}
if inst.Status != actualStatus {
instances[i].Status = actualStatus
_ = s.store.UpdateInstanceStatus(inst.ID, actualStatus)
}
}
respondJSON(w, http.StatusOK, instances)
}