diff --git a/Dockerfile b/Dockerfile index a41f9ef..e8ee6d4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,12 @@ 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 WORKDIR /app @@ -7,6 +14,9 @@ WORKDIR /app COPY go.mod go.sum ./ RUN go mod download && go mod verify +ENV PORT=1222 +HEALTHCHECK --interval=1s --timeout=30s --start-period=5s --retries=3 CMD [ "/minicurl" ] + COPY . . 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 COPY --from=build /app/build/app /exec +COPY --from=develop /minicurl /minicurl EXPOSE 1222 +ENV PORT=1222 +HEALTHCHECK --interval=1s --timeout=30s --start-period=5s --retries=3 CMD [ "/minicurl" ] + ENTRYPOINT ["/exec"] \ No newline at end of file diff --git a/cmd/main.go b/cmd/main.go index e799c8e..0f9f075 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -23,6 +23,10 @@ func isLoggedIn(c echo.Context) error { return c.NoContent(http.StatusNoContent) } +func health(c echo.Context) error { + return c.NoContent(http.StatusOK) +} + func init_database() { var err error @@ -38,6 +42,16 @@ func skip_auth(c echo.Context) bool { if c.Request().Method == "POST" && c.Path() == "/" { 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 } @@ -50,7 +64,9 @@ func main() { e := echo.New() // Middleware - e.Use(middleware.Logger()) + e.Use(middleware.LoggerWithConfig(middleware.LoggerConfig{ + Skipper: skip_log, + })) e.Use(middleware.Recover()) e.Use(middleware.CORS()) e.Use(lib.AuthMiddleware(skip_auth)) @@ -59,6 +75,7 @@ func main() { e.GET("/", isLoggedIn) e.POST("/", login) e.DELETE("/", logout) + e.GET("/health", health) // Start server e.Logger.Fatal(e.Start(":1222"))