From 70ba16a6bd766d8552f1c2cbecba2fbb4ea8081a Mon Sep 17 00:00:00 2001 From: Jonas Plum Date: Mon, 4 Nov 2024 21:47:55 +0100 Subject: [PATCH] feat: docker healthcheck (#1106) --- .goreleaser.yaml | 2 +- Makefile | 16 ++++++++++++++++ app/routes.go | 7 +++++++ docker/Dockerfile | 22 ++++++---------------- docker/goreleaser.Dockerfile | 9 --------- 5 files changed, 30 insertions(+), 26 deletions(-) delete mode 100644 docker/goreleaser.Dockerfile diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 6594aea..a782eb7 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -13,7 +13,7 @@ builds: dockers: - ids: [ catalyst ] - dockerfile: docker/goreleaser.Dockerfile + dockerfile: docker/Dockerfile image_templates: - "ghcr.io/securitybrewery/catalyst:main" - "ghcr.io/securitybrewery/catalyst:latest" diff --git a/Makefile b/Makefile index 694d6c8..63fe587 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,22 @@ build-ui: cd ui && bun install cd ui && bun build-only +.PHONY: build +build: build-ui + @echo "Building..." + go build -o catalyst . + + +.PHONY: build-linux +build-linux: build-ui + @echo "Building..." + GOOS=linux GOARCH=amd64 go build -o catalyst . + +.PHONY: docker +docker: build-linux + @echo "Building Docker image..." + docker build -f docker/Dockerfile -t catalyst . + .PHONY: dev dev: @echo "Running..." diff --git a/app/routes.go b/app/routes.go index dcd9dc3..c76b1c7 100644 --- a/app/routes.go +++ b/app/routes.go @@ -18,6 +18,13 @@ func addRoutes() func(*core.ServeEvent) error { return c.Redirect(http.StatusFound, "/ui/") }) e.Router.GET("/ui/*", staticFiles()) + e.Router.GET("/health", func(c echo.Context) error { + if _, err := Flags(e.App); err != nil { + return err + } + + return c.String(http.StatusOK, "OK") + }) e.Router.GET("/api/config", func(c echo.Context) error { flags, err := Flags(e.App) diff --git a/docker/Dockerfile b/docker/Dockerfile index 16e56c1..cfab460 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,24 +1,14 @@ -FROM oven/bun:debian -RUN apt-get update && apt-get install -y make -COPY .. /tmp/catalyst - -WORKDIR /tmp/catalyst - -RUN make build-ui - -FROM golang:1.23 -COPY --from=0 /tmp/catalyst /tmp/catalyst - -WORKDIR /tmp/catalyst - -RUN go build -o /usr/local/bin/catalyst - FROM ubuntu:24.04 -COPY --from=1 /usr/local/bin/catalyst /usr/local/bin/catalyst +RUN apt-get update && apt-get install -y curl python3 python3-pip python3-venv + +COPY catalyst /usr/local/bin/catalyst EXPOSE 8080 VOLUME /usr/local/bin/catalyst_data +HEALTHCHECK --interval=5s --timeout=3s --retries=3 \ + CMD curl -f http://localhost:8080/health || exit 1 + CMD ["/usr/local/bin/catalyst", "serve", "--http", "0.0.0.0:8080"] \ No newline at end of file diff --git a/docker/goreleaser.Dockerfile b/docker/goreleaser.Dockerfile deleted file mode 100644 index be558ec..0000000 --- a/docker/goreleaser.Dockerfile +++ /dev/null @@ -1,9 +0,0 @@ -FROM ubuntu:24.04 - -COPY catalyst /usr/local/bin/catalyst - -EXPOSE 8080 - -VOLUME /usr/local/bin/catalyst_data - -CMD ["/usr/local/bin/catalyst", "serve", "--http", "0.0.0.0:8080"] \ No newline at end of file