build - prozess optimiert mit push nach zot
nginx-kill - > maint. site...
This commit is contained in:
1 parent
665135f87e
commit
64417d8353
19 files changed
+447
-61
No files matched your search
+40
-3
@@ -5,6 +5,7 @@ import (
|
||||
"crypto/ed25519"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"io"
|
||||
"log/slog"
|
||||
"net"
|
||||
@@ -152,10 +153,36 @@ func newFakeDocker(t *testing.T, containers ...docker.Container) *fakeDocker {
|
||||
t.Fatal(err)
|
||||
}
|
||||
mux := http.NewServeMux()
|
||||
// Wie Docker: gestoppte Container ohne Ports in der Liste; die Zuordnung
|
||||
// gibt es nur über /containers/{id}/json.
|
||||
mux.HandleFunc("/containers/json", func(w http.ResponseWriter, r *http.Request) {
|
||||
f.mu.Lock()
|
||||
defer f.mu.Unlock()
|
||||
json.NewEncoder(w).Encode(f.containers)
|
||||
list := []docker.Container{}
|
||||
for _, c := range f.containers {
|
||||
if c.State != "running" {
|
||||
c.Ports = nil
|
||||
}
|
||||
list = append(list, c)
|
||||
}
|
||||
json.NewEncoder(w).Encode(list)
|
||||
})
|
||||
mux.HandleFunc("/containers/{id}/json", func(w http.ResponseWriter, r *http.Request) {
|
||||
f.mu.Lock()
|
||||
defer f.mu.Unlock()
|
||||
for _, c := range f.containers {
|
||||
if c.ID != r.PathValue("id") {
|
||||
continue
|
||||
}
|
||||
bindings := map[string][]map[string]string{}
|
||||
for _, p := range c.Ports {
|
||||
key := fmt.Sprintf("%d/%s", p.PrivatePort, p.Type)
|
||||
bindings[key] = append(bindings[key], map[string]string{"HostIp": p.IP, "HostPort": fmt.Sprint(p.PublicPort)})
|
||||
}
|
||||
json.NewEncoder(w).Encode(map[string]any{"Id": c.ID, "HostConfig": map[string]any{"PortBindings": bindings}})
|
||||
return
|
||||
}
|
||||
http.Error(w, `{"message":"No such container"}`, http.StatusNotFound)
|
||||
})
|
||||
mux.HandleFunc("/events", func(w http.ResponseWriter, r *http.Request) {
|
||||
ch := make(chan docker.Event, 8)
|
||||
@@ -256,8 +283,18 @@ func TestRun_EndToEnd(t *testing.T) {
|
||||
t.Errorf("Knotenstatus %q", st)
|
||||
}
|
||||
|
||||
dock.set("die") // Container gestoppt
|
||||
eventually(t, "Route nach Containerstopp entfernt", func() bool { return s.traefikConfig(t) == "{}" })
|
||||
// Gestoppt (docker stop, Absturz): Wartungsseite statt 404.
|
||||
down := wordpress()
|
||||
down.State = "exited"
|
||||
dock.set("die", down)
|
||||
eventually(t, "Wartungsseite nach Containerstopp", func() bool {
|
||||
c := s.traefikConfig(t)
|
||||
return strings.Contains(c, "kunde__node-1__wp") && strings.Contains(c, "sultan__interceptor") &&
|
||||
strings.Contains(c, `"maintenance"`) && strings.Contains(c, "http://100.64.0.42:8081")
|
||||
})
|
||||
|
||||
dock.set("destroy") // entfernt (docker compose down): Route weg
|
||||
eventually(t, "Route nach Entfernen des Containers weg", func() bool { return s.traefikConfig(t) == "{}" })
|
||||
|
||||
dock.set("start", wordpress())
|
||||
eventually(t, "Route nach Containerstart zurück", func() bool {
|
||||
|
||||
Reference in new issue
Block a user