diff --git a/Dockerfile b/Dockerfile index 4e2441a..f70421c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,11 @@ -FROM node:18 AS tailwind-builder +FROM node:20 AS tailwind-builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build-css -FROM golang:1.23 AS go-builder +FROM golang:1.23.2-bookworm AS go-builder WORKDIR /app COPY . . @@ -23,7 +23,8 @@ WORKDIR /app COPY --from=tailwind-builder /app/public ./public COPY --from=go-builder /app/server . COPY --from=go-builder /app/migration . +COPY --from=go-builder /app/scripts/start.sh . -EXPOSE 8080 +RUN chmod +x start.sh -ENTRYPOINT ["/bin/sh", "-c", "./migration && ./server"] +ENTRYPOINT ["start.sh"] diff --git a/cmd/migration/main.go b/cmd/migration/main.go index 31b0c1e..27fbe10 100644 --- a/cmd/migration/main.go +++ b/cmd/migration/main.go @@ -10,18 +10,16 @@ import ( _ "github.com/tursodatabase/go-libsql" ) -const command = "up" - //go:embed migrations/*.sql var embedMigrations embed.FS func main() { - sqlURL := os.Getenv("SQL_URL") - if sqlURL == "" { + dbURL := os.Getenv("SQL_URL") + if dbURL == "" { log.Fatal("No SQL_URL set in env") } - db, err := sql.Open("libsql", sqlURL) + db, err := sql.Open("libsql", dbURL) if err != nil { log.Fatal("error opening database: ", err) } @@ -39,4 +37,6 @@ func main() { if err := goose.Up(db, "migrations"); err != nil { log.Fatal(err) } + + log.Println("Migration run is complete") } diff --git a/fly.toml b/fly.toml index c3489d8..6f84104 100644 --- a/fly.toml +++ b/fly.toml @@ -8,6 +8,9 @@ primary_region = 'sin' [build] +[env] + PORT = '8080' + [http_service] internal_port = 8080 force_https = true diff --git a/scripts/start.sh b/scripts/start.sh new file mode 100644 index 0000000..82dc9dd --- /dev/null +++ b/scripts/start.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -e +./migration +exec ./server