Your server must implement the interface GraceServer
with two methods:
type GraceServer interface {
Serve(listener net.Listener) error
Shutdown(ctx context.Context) error
}
Use gracego.Serve()
to start your server:
func main() {
server = &http.Server{}
err := gracego.Serve(server, "demo", ":8080")
if err != nil {
fmt.Printf("server error: %v", err)
}
}
kill -HUP <PID>
v2
: the new version to upgradeecho
: the relative path of the upgrade command in the download.ziphttp://127.0.0.1:8081/download.zip
: the upgrade url, which must be a zip file and end with.zip
or.jar
.
err := gracego.Upgrade("v2", "echo", "http://127.0.0.1:8081/download.zip")
if err != nil {
// error handle
}
- echo: example to shutdown, restart, upgrade, replace application gracefully