From dd206b52780fe73079d2aa5341d4722515232ade Mon Sep 17 00:00:00 2001 From: rare-magma Date: Sat, 29 Jun 2024 14:09:32 +0200 Subject: [PATCH] feat: add healthcheck Signed-off-by: rare-magma --- Dockerfile | 6 +++++- healthcheck/heathcheck.go | 20 ++++++++++++++++++++ main.go | 4 +++- 3 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 healthcheck/heathcheck.go diff --git a/Dockerfile b/Dockerfile index d1eb452..000771c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,13 +8,17 @@ COPY . . RUN npx tailwindcss -i static/tailwind.css -o static/app.css -m RUN go mod download -RUN GOOS=linux GOARCH=$TARGETARCH CGO_ENABLED=0 go build -ldflags "-X codeberg.org/rimgo/rimgo/pages.VersionInfo=$(date '+%Y-%m-%d')-$(git rev-list --abbrev-commit -1 HEAD)" +RUN GOOS=linux GOARCH=$TARGETARCH CGO_ENABLED=0 go build -ldflags "-X codeberg.org/rimgo/rimgo/pages.VersionInfo=$(date '+%Y-%m-%d')-$(git rev-list --abbrev-commit -1 HEAD)" \ + && GOOS=linux GOARCH=$TARGETARCH CGO_ENABLED=0 go build -o healthcheck ./healthcheck FROM scratch as bin WORKDIR /app COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ COPY --from=build /src/rimgo . +COPY --from=build /src/healthcheck . + +HEALTHCHECK --interval=60s --timeout=5s --start-period=2s --retries=3 CMD [ "/healthcheck","http://localhost:3000/livez" ] EXPOSE 3000 diff --git a/healthcheck/heathcheck.go b/healthcheck/heathcheck.go new file mode 100644 index 0000000..24b2318 --- /dev/null +++ b/healthcheck/heathcheck.go @@ -0,0 +1,20 @@ +package main + +import ( + "fmt" + "log" + "net/http" + "os" +) + +func main() { + if len(os.Args) < 2 { + log.Fatal("Expected URL as command-line argument") + os.Exit(1) + } + url := os.Args[1] + fmt.Println(url) + if _, err := http.Get(url); err != nil { + os.Exit(1) + } +} diff --git a/main.go b/main.go index 2d7df76..f8aef56 100644 --- a/main.go +++ b/main.go @@ -11,13 +11,14 @@ import ( "codeberg.org/rimgo/rimgo/static" "codeberg.org/rimgo/rimgo/utils" "codeberg.org/rimgo/rimgo/views" - "github.com/mailgun/raymond/v2" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/cache" "github.com/gofiber/fiber/v2/middleware/filesystem" + "github.com/gofiber/fiber/v2/middleware/healthcheck" "github.com/gofiber/fiber/v2/middleware/recover" "github.com/gofiber/template/handlebars/v2" "github.com/joho/godotenv" + "github.com/mailgun/raymond/v2" ) func main() { @@ -56,6 +57,7 @@ func main() { }, }) + app.Use(healthcheck.New()) app.Use(recover.New(recover.Config{ EnableStackTrace: true, StackTraceHandler: func(c *fiber.Ctx, e interface{}) {