Server: Add "GET /health" handler so clients can perform health checks
Signed-off-by: Michael Mayer <michael@photoprism.app>
This commit is contained in:
parent
554ba35f2f
commit
6ac673056b
1 changed files with 14 additions and 5 deletions
|
@ -15,6 +15,7 @@ import (
|
|||
"github.com/gin-gonic/gin"
|
||||
|
||||
"github.com/photoprism/photoprism/internal/config"
|
||||
"github.com/photoprism/photoprism/pkg/header"
|
||||
)
|
||||
|
||||
// Start the REST API server using the configuration provided
|
||||
|
@ -27,14 +28,14 @@ func Start(ctx context.Context, conf *config.Config) {
|
|||
|
||||
start := time.Now()
|
||||
|
||||
// Set HTTP server mode.
|
||||
// Set web server mode.
|
||||
if conf.HttpMode() != "" {
|
||||
gin.SetMode(conf.HttpMode())
|
||||
} else if conf.Debug() == false {
|
||||
gin.SetMode(gin.ReleaseMode)
|
||||
}
|
||||
|
||||
// Create new HTTP router engine without standard middleware.
|
||||
// Create new router engine without standard middleware.
|
||||
router := gin.New()
|
||||
|
||||
// Set proxy addresses from which headers related to the client and protocol can be trusted
|
||||
|
@ -56,6 +57,7 @@ func Start(ctx context.Context, conf *config.Config) {
|
|||
".png", ".gif", ".jpeg", ".jpg", ".webp", ".mp3", ".mp4", ".zip", ".gz",
|
||||
}),
|
||||
gzip.WithExcludedPaths([]string{
|
||||
conf.BaseUri("/health"),
|
||||
conf.BaseUri(config.ApiUri + "/t"),
|
||||
conf.BaseUri(config.ApiUri + "/folders/t"),
|
||||
conf.BaseUri(config.ApiUri + "/zip"),
|
||||
|
@ -79,14 +81,21 @@ func Start(ctx context.Context, conf *config.Config) {
|
|||
// Find and load templates.
|
||||
router.LoadHTMLFiles(conf.TemplateFiles()...)
|
||||
|
||||
// Register HTTP route handlers.
|
||||
// Register application routes.
|
||||
registerRoutes(router, conf)
|
||||
|
||||
// Register "GET /health" route so clients can perform health checks.
|
||||
router.GET(conf.BaseUri("/health"), func(c *gin.Context) {
|
||||
c.Header(header.CacheControl, header.CacheControlNoStore)
|
||||
c.Header(header.AccessControlAllowOrigin, header.Any)
|
||||
c.String(http.StatusOK, "OK")
|
||||
})
|
||||
|
||||
// Start web server.
|
||||
var tlsErr error
|
||||
var tlsManager *autocert.Manager
|
||||
var server *http.Server
|
||||
|
||||
// Start HTTP server.
|
||||
if unixSocket := conf.HttpSocket(); unixSocket != "" {
|
||||
var listener net.Listener
|
||||
var unixAddr *net.UnixAddr
|
||||
|
@ -144,7 +153,7 @@ func Start(ctx context.Context, conf *config.Config) {
|
|||
}
|
||||
}
|
||||
|
||||
// Graceful HTTP server shutdown.
|
||||
// Graceful web server shutdown.
|
||||
<-ctx.Done()
|
||||
log.Info("server: shutting down")
|
||||
err := server.Close()
|
||||
|
|
Loading…
Reference in a new issue