Stoppen Sie einen laufenden Docker-Container, indem Sie SIGTERM @ sende

Ich habe eine sehr, sehr einfache Go-App, die auf Port 8080 lauscht.

http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(200)
    w.Header().Set("Content-Type", "text-plain")
    w.Write([]byte("Hello World!"))
})
log.Fatal(http.ListenAndServe(":8080", http.DefaultServeMux))

Ich installiere es in einem Docker-Container und starte es wie folgt:

FROM golang:alpine
ADD . /go/src/github.com/myuser/myapp
RUN go install github.com/myuser/myapp
ENTRYPOINT ["/go/bin/myapp"]
EXPOSE 8080

Ich starte dann den Container mitdocker run:

docker run --publish 8080:8080 first-app

Ich erwarte, dass ich, wie die meisten Programme, ein SIGTERM an den Prozess senden kann, der @ ausführdocker run und dies führt dazu, dass der Container nicht mehr ausgeführt wird. Ich beobachte, dass das Senden von SIGTERM keine Auswirkung hat und stattdessen einen Befehl wie @ verwenden musdocker kill oderdocker stop.

Ist das beabsichtigte Verhalten? Ich habe gefragtin den Foren und im IRC und keine Antwort bekommen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage