Pare um contêiner do Docker em execução enviando SIGTERM
Eu tenho um aplicativo Go muito, muito simples, escutando na porta 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))
Instalei-o em um contêiner do Docker e o inicio da seguinte maneira:
FROM golang:alpine
ADD . /go/src/github.com/myuser/myapp
RUN go install github.com/myuser/myapp
ENTRYPOINT ["/go/bin/myapp"]
EXPOSE 8080
Eu, então, corro o contêiner usandodocker run
:
docker run --publish 8080:8080 first-app
Espero que, como a maioria dos programas, eu possa enviar um SIGTERM para o processo em execuçãodocker run
e isso fará com que o contêiner pare de funcionar. Observo que o envio do SIGTERM não tem efeito e, em vez disso, preciso usar um comando comodocker kill
oudocker stop
.
Esse comportamento é pretendido? Eu pergunteinos fóruns e no IRC e não obteve resposta.