Я не могу остановить веб-сервер Docker Golang в Docker-контейнере, отправив сигнал прерывания.
У меня есть следующее main.go:
package main
import (
"log"
"net/http"
)
func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello"))
})
log.Fatal(http.ListenAndServe(":1818", nil))
}
и Dockerfile:
FROM golang:1.11.4-alpine3.8
WORKDIR /go/src/server
COPY main.go main.go
CMD ["go", "run", "main.go"]
Я строю:
docker build -t goserver .
и запуск изображения:
docker run -p 1818:1818 goserver
В данный момент сервер работает. Когда я нажимаю Ctrl + C в моем консольном контейнере (и серверном процессе) все еще работает, и единственный способ остановить это - вызвать docker, чтобы сделать это.
Я хотел бы знать, как обрабатывать такое поведение, чтобы сервер и контейнер останавливались при нажатии Ctrl + C.
Версия Docker 18.09.1