Compare commits

..

4 Commits

Author SHA1 Message Date
Jonas Plum
6a8c92f1f6 fix: server setup (#1115) 2024-11-08 21:56:32 +01:00
Jonas Plum
9285aec468 fix: docker entrypoint permissions (#1114) 2024-11-06 02:12:09 +01:00
Jonas Plum
97d0cd3428 fix: goreleaser docker (#1113) 2024-11-06 02:02:47 +01:00
Jonas Plum
baba5b7a45 feat: docker entrypoint with environment variables (#1112) 2024-11-06 01:52:48 +01:00
5 changed files with 56 additions and 39 deletions

View File

@@ -18,6 +18,8 @@ dockers:
- "ghcr.io/securitybrewery/catalyst:main"
- "{{if not .Prerelease}}ghcr.io/securitybrewery/catalyst:latest{{end}}"
- "ghcr.io/securitybrewery/catalyst:{{.Tag}}"
extra_files:
- docker/entrypoint.sh
archives:
- format: tar.gz

View File

@@ -1,7 +1,6 @@
package app
import (
"fmt"
"os"
"strings"
@@ -39,47 +38,14 @@ func App(dir string, test bool) (*pocketbase.PocketBase, error) {
reaction.BindHooks(app, test)
app.OnAfterBootstrap().Add(func(e *core.BootstrapEvent) error {
if err := MigrateDBs(e.App); err != nil {
return err
}
if err := SetFlags(e.App, flags); err != nil {
return err
}
if HasFlag(e.App, "demo") {
bindDemoHooks(e.App)
}
if appURL != "" {
s := e.App.Settings()
s.Meta.AppUrl = appURL
if err := e.App.Dao().SaveSettings(s); err != nil {
return err
}
}
return e.App.RefreshSettings()
return MigrateDBs(e.App)
})
app.OnBeforeServe().Add(addRoutes())
app.OnBeforeServe().Add(setupServer(appURL, flags))
return app, nil
}
func bindDemoHooks(app core.App) {
app.OnRecordBeforeCreateRequest("files", "reactions").Add(func(e *core.RecordCreateEvent) error {
return fmt.Errorf("cannot create %s in demo mode", e.Record.Collection().Name)
})
app.OnRecordBeforeUpdateRequest("files", "reactions").Add(func(e *core.RecordUpdateEvent) error {
return fmt.Errorf("cannot update %s in demo mode", e.Record.Collection().Name)
})
app.OnRecordBeforeDeleteRequest("files", "reactions").Add(func(e *core.RecordDeleteEvent) error {
return fmt.Errorf("cannot delete %s in demo mode", e.Record.Collection().Name)
})
}
func dev() bool {
return strings.HasPrefix(os.Args[0], os.TempDir())
}

View File

@@ -1,6 +1,7 @@
package app
import (
"fmt"
"net/http"
"net/http/httputil"
"net/url"
@@ -12,8 +13,25 @@ import (
"github.com/SecurityBrewery/catalyst/ui"
)
func addRoutes() func(*core.ServeEvent) error {
func setupServer(appURL string, flags []string) func(e *core.ServeEvent) error {
return func(e *core.ServeEvent) error {
if err := SetFlags(e.App, flags); err != nil {
return err
}
if HasFlag(e.App, "demo") {
bindDemoHooks(e.App)
}
if appURL != "" {
s := e.App.Settings()
s.Meta.AppUrl = appURL
if err := e.App.Dao().SaveSettings(s); err != nil {
return err
}
}
e.Router.GET("/", func(c echo.Context) error {
return c.Redirect(http.StatusFound, "/ui/")
})
@@ -37,10 +55,22 @@ func addRoutes() func(*core.ServeEvent) error {
})
})
return nil
return e.App.RefreshSettings()
}
}
func bindDemoHooks(app core.App) {
app.OnRecordBeforeCreateRequest("files", "reactions").Add(func(e *core.RecordCreateEvent) error {
return fmt.Errorf("cannot create %s in demo mode", e.Record.Collection().Name)
})
app.OnRecordBeforeUpdateRequest("files", "reactions").Add(func(e *core.RecordUpdateEvent) error {
return fmt.Errorf("cannot update %s in demo mode", e.Record.Collection().Name)
})
app.OnRecordBeforeDeleteRequest("files", "reactions").Add(func(e *core.RecordDeleteEvent) error {
return fmt.Errorf("cannot delete %s in demo mode", e.Record.Collection().Name)
})
}
func staticFiles() func(echo.Context) error {
return func(c echo.Context) error {
if dev() {

View File

@@ -11,4 +11,8 @@ 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"]
COPY docker/entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
CMD ["/entrypoint.sh"]

15
docker/entrypoint.sh Normal file
View File

@@ -0,0 +1,15 @@
#!/bin/bash
# Set the flags
FLAGS=""
if [ -n "$CATALYST_FLAGS" ]; then
FLAGS="$CATALYST_FLAGS"
fi
# Set the app url
APP_URL=""
if [ -n "$CATALYST_APP_URL" ]; then
APP_URL="$CATALYST_APP_URL"
fi
/usr/local/bin/catalyst serve --http 0.0.0.0:8080 --flags "$FLAGS" --app-url "$APP_URL"