feat: add healthcheck

Signed-off-by: rare-magma <rare-magma@posteo.eu>
This commit is contained in:
rare-magma 2024-06-29 14:09:32 +02:00
parent 20715f53af
commit dd206b5278
No known key found for this signature in database
3 changed files with 28 additions and 2 deletions

View File

@ -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

20
healthcheck/heathcheck.go Normal file
View File

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

View File

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