v1.0.0: health: add a simple healthcheck

Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
GnomeZworc 2024-03-15 18:56:54 +01:00
commit c78316301f
Signed by: nicolas.boufideline
GPG key ID: 4406BBBF8845D632
2 changed files with 32 additions and 1 deletions

View file

@ -1,5 +1,12 @@
FROM golang:1.21-alpine AS develop FROM golang:1.21-alpine AS develop
# Changement du répertoire de travail
WORKDIR /
RUN apk update && apk add --no-cache curl tar && \
curl -O https://gitlab.g3e.fr/api/v4/projects/34/packages/generic/minicurl/v1.0.0/minicurl_linux_amd64.tar.gz && \
tar xzvf minicurl_linux_amd64.tar.gz
# Changement du répertoire de travail # Changement du répertoire de travail
WORKDIR /app WORKDIR /app
@ -7,6 +14,9 @@ WORKDIR /app
COPY go.mod go.sum ./ COPY go.mod go.sum ./
RUN go mod download && go mod verify RUN go mod download && go mod verify
ENV PORT=1222
HEALTHCHECK --interval=1s --timeout=30s --start-period=5s --retries=3 CMD [ "/minicurl" ]
COPY . . COPY . .
CMD ["sh", "-c", "echo 'run application' && go run ./cmd/"] CMD ["sh", "-c", "echo 'run application' && go run ./cmd/"]
@ -18,7 +28,11 @@ RUN CGO_ENABLED=0 go build -o ./build/app ./cmd/
FROM scratch AS release FROM scratch AS release
COPY --from=build /app/build/app /exec COPY --from=build /app/build/app /exec
COPY --from=develop /minicurl /minicurl
EXPOSE 1222 EXPOSE 1222
ENV PORT=1222
HEALTHCHECK --interval=1s --timeout=30s --start-period=5s --retries=3 CMD [ "/minicurl" ]
ENTRYPOINT ["/exec"] ENTRYPOINT ["/exec"]

View file

@ -23,6 +23,10 @@ func isLoggedIn(c echo.Context) error {
return c.NoContent(http.StatusNoContent) return c.NoContent(http.StatusNoContent)
} }
func health(c echo.Context) error {
return c.NoContent(http.StatusOK)
}
func init_database() { func init_database() {
var err error var err error
@ -38,6 +42,16 @@ func skip_auth(c echo.Context) bool {
if c.Request().Method == "POST" && c.Path() == "/" { if c.Request().Method == "POST" && c.Path() == "/" {
return true return true
} }
if c.Request().Method == "GET" && c.Path() == "/health" {
return true
}
return false
}
func skip_log(c echo.Context) bool {
if c.Request().Method == "GET" && c.Path() == "/health" {
return true
}
return false return false
} }
@ -50,7 +64,9 @@ func main() {
e := echo.New() e := echo.New()
// Middleware // Middleware
e.Use(middleware.Logger()) e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{
Skipper: skip_log,
}))
e.Use(middleware.Recover()) e.Use(middleware.Recover())
e.Use(middleware.CORS()) e.Use(middleware.CORS())
e.Use(lib.AuthMiddleware(skip_auth)) e.Use(lib.AuthMiddleware(skip_auth))
@ -59,6 +75,7 @@ func main() {
e.GET("/", isLoggedIn) e.GET("/", isLoggedIn)
e.POST("/", login) e.POST("/", login)
e.DELETE("/", logout) e.DELETE("/", logout)
e.GET("/health", health)
// Start server // Start server
e.Logger.Fatal(e.Start(":1222")) e.Logger.Fatal(e.Start(":1222"))