diff --git a/build/full/Dockerfile b/build/full/Dockerfile index ac7b1e926..b2c2591e3 100644 --- a/build/full/Dockerfile +++ b/build/full/Dockerfile @@ -81,12 +81,12 @@ RUN curl -L https://github.com/stern/stern/releases/download/v1.25.0/stern_1.25. # install CA certificates COPY --from=builder /app/.bin/canary-checker /app -RUN /app/canary-checker go-offline - RUN mkdir /opt/database RUN groupadd --gid 1000 canary RUN useradd canary --uid 1000 -g canary -m -d /var/lib/canary RUN chown -R 1000:1000 /opt/database +RUN chown -R 1000:1000 /app USER canary:canary +RUN /app/canary-checker go-offline ENTRYPOINT ["/app/canary-checker"] diff --git a/build/minimal/Dockerfile b/build/minimal/Dockerfile index 3c4617ef4..7e2bcd6c2 100644 --- a/build/minimal/Dockerfile +++ b/build/minimal/Dockerfile @@ -21,12 +21,12 @@ RUN apt-get update && \ COPY --from=builder /app/.bin/canary-checker /app -RUN /app/canary-checker go-offline - RUN mkdir /opt/database RUN groupadd --gid 1000 canary RUN useradd canary --uid 1000 -g canary -m -d /var/lib/canary RUN chown -R 1000:1000 /opt/database +RUN chown -R 1000:1000 /app USER canary:canary +RUN /app/canary-checker go-offline ENTRYPOINT ["/app/canary-checker"] diff --git a/cmd/offline.go b/cmd/offline.go index c44ee16a2..1d6428cbc 100644 --- a/cmd/offline.go +++ b/cmd/offline.go @@ -1,6 +1,8 @@ package cmd import ( + "os" + "github.com/flanksource/canary-checker/pkg/db" "github.com/flanksource/commons/logger" "github.com/spf13/cobra" @@ -13,5 +15,23 @@ var GoOffline = &cobra.Command{ if err := db.GoOffline(); err != nil { logger.Fatalf("Failed to go offline: %+v", err) } + + // Run in embedded mode once to download the postgres binary + databaseDir := "temp-database-dir" + if err := os.Mkdir(databaseDir, 0755); err != nil { + logger.Fatalf("Failed to create database directory[%s]: %+v", err) + } + defer os.RemoveAll(databaseDir) + + db.ConnectionString = "embedded://" + databaseDir + if err := db.Init(); err != nil { + logger.Fatalf("Failed to run in embedded mode: %+v", err) + } + if err := db.PostgresServer.Stop(); err != nil { + logger.Fatalf("Failed to stop embedded postgres: %+v", err) + } + + // Intentionally exit with code 0 for Docker + os.Exit(0) }, } diff --git a/pkg/jobs/canary/canary_jobs.go b/pkg/jobs/canary/canary_jobs.go index 73be5b307..064b32e61 100644 --- a/pkg/jobs/canary/canary_jobs.go +++ b/pkg/jobs/canary/canary_jobs.go @@ -134,7 +134,7 @@ func (job CanaryJob) Run() { } for status, checkIDs := range checkDeleteStrategyGroup { if err := db.AddCheckStatuses(checkIDs, models.CheckHealthStatus(status)); err != nil { - logger.Errorf("error adding statuses for transformed checks") + logger.Errorf("error adding statuses for transformed checks: %v", err) } if err := db.RemoveTransformedChecks(checkIDs); err != nil { logger.Errorf("error deleting transformed checks for canary %s: %v", canaryID, err)