From 52c4c785df7a6520447dd9919f43ff8d576fc625 Mon Sep 17 00:00:00 2001 From: orohi Date: Wed, 17 Jun 2026 05:45:22 +0300 Subject: [PATCH] fix: PHP versions fallback and auto-migrate on panel start --- Dockerfile.panel | 3 +++ cmd/migrate/main.go | 16 +--------------- cmd/panel/main.go | 8 ++++++++ internal/database/path.go | 17 +++++++++++++++++ internal/handler/health.go | 3 +-- internal/phpversions/versions.go | 12 ++++++++++++ internal/repository/site.go | 27 ++++++++++++--------------- 7 files changed, 54 insertions(+), 32 deletions(-) create mode 100644 internal/database/path.go create mode 100644 internal/phpversions/versions.go 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 {