Skip to content
/ gracego Public

gracefully restart,upgrade,replace golang application

License

Notifications You must be signed in to change notification settings

vogo/gracego

Repository files navigation

gracego enables gracefully restart, upgrade or replace golang application.

Usage

Start server

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)
	}
}

Restart server gracefully

kill -HUP <PID>

Upgrade server gracefully

  • v2: the new version to upgrade
  • echo: the relative path of the upgrade command in the download.zip
  • http://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
}

Examples

  • echo: example to shutdown, restart, upgrade, replace application gracefully