Detenga un contenedor Docker en ejecución enviando SIGTERM
Tengo una aplicación Go muy, muy simple, que escucha en el puerto 8080
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))
Lo instalo en un contenedor Docker y lo inicio así:
FROM golang:alpine
ADD . /go/src/github.com/myuser/myapp
RUN go install github.com/myuser/myapp
ENTRYPOINT ["/go/bin/myapp"]
EXPOSE 8080
Luego ejecuto el contenedor usandodocker run
:
docker run --publish 8080:8080 first-app
Espero que, como la mayoría de los programas, pueda enviar un SIGTERM al proceso en ejecucióndocker run
y esto hará que el contenedor deje de funcionar. Observo que enviar SIGTERM no tiene ningún efecto, y en su lugar necesito usar un comando comodocker kill
odocker stop
.
¿Es este el comportamiento previsto? he preguntadoen los foros y en IRC y no obtuve respuesta.