diff --git a/.devcontainer/.env b/.devcontainer/.env index c16177895..17f396eee 100644 --- a/.devcontainer/.env +++ b/.devcontainer/.env @@ -3,4 +3,5 @@ POSTGRES_PASSWORD=postgres POSTGRES_DB=postgres POSTGRES_HOSTNAME=localhost LC_COLLATE=POSIX -FML_LOG_LEVEL=DEBUG \ No newline at end of file +FML_LOG_LEVEL=DEBUG +FML_DEV_MODE=true \ No newline at end of file diff --git a/.gitignore b/.gitignore index 41634389a..49fd2c2b5 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ fasttrackml # Local database fasttrackml.db* +encrypted.db* # Imported integration tests tests/integration/python/*/*.src @@ -24,3 +25,7 @@ ignore/ # Goreleaser dist/ + +# Optional workspace +go.work +*.code-workspace diff --git a/.vscode/launch.json b/.vscode/launch.json index bac0578ee..e0a80fa01 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,11 +10,12 @@ "request": "launch", "mode": "auto", "program": "${workspaceFolder}", + "buildFlags": "-tags '${config:go.buildTags}'", "args": [ "server", "--database-uri", "postgres://postgres:postgres@localhost/postgres" - ] + ], }, { "name": "Launch server (sqlite memory)", @@ -22,11 +23,12 @@ "request": "launch", "mode": "auto", "program": "${workspaceFolder}", + "buildFlags": "-tags '${config:go.buildTags}'", "args": [ "server", "--database-uri", "sqlite://fasttrackml.db?mode=memory&cache=shared" - ] + ], }, { "name": "Launch server (sqlite file)", @@ -34,11 +36,12 @@ "request": "launch", "mode": "auto", "program": "${workspaceFolder}", + "buildFlags": "-tags '${config:go.buildTags}'", "args": [ "server", "--database-uri", "sqlite://fasttrackml.db" - ] + ], }, { "name": "Launch server (encrypted sqlite file)", @@ -46,11 +49,12 @@ "request": "launch", "mode": "auto", "program": "${workspaceFolder}", + "buildFlags": "-tags '${config:go.buildTags}'", "args": [ "server", "--database-uri", "sqlite://encrypted.db?_key=passphrase" - ] + ], } ] } \ No newline at end of file diff --git a/pkg/cmd/server.go b/pkg/cmd/server.go index 60a7a5bad..38c488443 100644 --- a/pkg/cmd/server.go +++ b/pkg/cmd/server.go @@ -11,6 +11,7 @@ import ( "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/basicauth" "github.com/gofiber/fiber/v2/middleware/compress" + "github.com/gofiber/fiber/v2/middleware/cors" "github.com/gofiber/fiber/v2/middleware/logger" "github.com/gofiber/fiber/v2/middleware/recover" log "github.com/sirupsen/logrus" @@ -148,6 +149,11 @@ func initServer() *fiber.App { }, }) + if viper.GetBool("dev-mode") { + log.Info("Development mode - enabling CORS") + server.Use(cors.New()) + } + authUsername := viper.GetString("auth-username") authPassword := viper.GetString("auth-password") if authUsername != "" && authPassword != "" { @@ -196,6 +202,8 @@ func init() { ServerCmd.Flags().Bool("database-migrate", true, "Run database migrations") ServerCmd.Flags().Bool("database-reset", false, "Reinitialize database - WARNING all data will be lost!") ServerCmd.Flags().MarkHidden("database-reset") + ServerCmd.Flags().Bool("dev-mode", false, "Development mode - enable CORS") + ServerCmd.Flags().MarkHidden("dev-mode") viper.BindEnv("auth-username", "MLFLOW_TRACKING_USERNAME") viper.BindEnv("auth-password", "MLFLOW_TRACKING_PASSWORD") }