diff --git a/Dockerfile.panel b/Dockerfile.panel index 5671dc4..e6e3ad3 100644 --- a/Dockerfile.panel +++ b/Dockerfile.panel @@ -13,6 +13,9 @@ FROM alpine:3.20 RUN apk add --no-cache ca-certificates COPY --from=builder /panel /panel +COPY --from=builder /app/migrations /migrations + +ENV MIGRATIONS_PATH=/migrations EXPOSE 8000 diff --git a/cmd/migrate/main.go b/cmd/migrate/main.go index 8bde4c4..d8d4c25 100644 --- a/cmd/migrate/main.go +++ b/cmd/migrate/main.go @@ -4,8 +4,6 @@ import ( "context" "flag" "log" - "os" - "path/filepath" "github.com/panelhosting/panel/internal/config" "github.com/panelhosting/panel/internal/database" @@ -20,7 +18,7 @@ func main() { log.Fatal(err) } - migrationsPath, err := resolveMigrationsPath() + migrationsPath, err := database.MigrationsPath() if err != nil { log.Fatal(err) } @@ -46,15 +44,3 @@ func main() { defer pool.Close() log.Println("database connection ok") } - -func resolveMigrationsPath() (string, error) { - if p := os.Getenv("MIGRATIONS_PATH"); p != "" { - return p, nil - } - - wd, err := os.Getwd() - if err != nil { - return "", err - } - return filepath.Join(wd, "migrations"), nil -} diff --git a/cmd/panel/main.go b/cmd/panel/main.go index a6e8f19..867a00f 100644 --- a/cmd/panel/main.go +++ b/cmd/panel/main.go @@ -30,6 +30,14 @@ func main() { } defer pool.Close() + migrationsPath, err := database.MigrationsPath() + if err != nil { + log.Fatal(err) + } + if err := database.RunMigrations(cfg.DatabaseURL, migrationsPath); err != nil { + log.Printf("migrate: %v", err) + } + srv, err := server.New(pool, cfg) if err != nil { log.Fatal(err) diff --git a/internal/database/path.go b/internal/database/path.go new file mode 100644 index 0000000..cd039c0 --- /dev/null +++ b/internal/database/path.go @@ -0,0 +1,17 @@ +package database + +import ( + "os" + "path/filepath" +) + +func MigrationsPath() (string, error) { + if p := os.Getenv("MIGRATIONS_PATH"); p != "" { + return p, nil + } + wd, err := os.Getwd() + if err != nil { + return "", err + } + return filepath.Join(wd, "migrations"), nil +} diff --git a/internal/handler/health.go b/internal/handler/health.go index b88ab73..59f3c30 100644 --- a/internal/handler/health.go +++ b/internal/handler/health.go @@ -126,8 +126,7 @@ func dashboardPageHTML(username string) string {