diff --git a/Dockerfile b/Dockerfile index 9125af9..2e17598 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,33 +1,47 @@ -FROM node:20-alpine AS deps +# syntax=docker/dockerfile:1.7 + +# ---- deps ---- +FROM node:20-bookworm-slim AS deps WORKDIR /app -COPY package.json package-lock.json ./ +RUN apt-get update && apt-get install -y --no-install-recommends \ + openssl ca-certificates \ + && rm -rf /var/lib/apt/lists/* +COPY package.json package-lock.json* ./ +COPY prisma ./prisma RUN npm ci -FROM node:20-alpine AS builder +# ---- build ---- +FROM node:20-bookworm-slim AS build WORKDIR /app +RUN apt-get update && apt-get install -y --no-install-recommends \ + openssl ca-certificates \ + && rm -rf /var/lib/apt/lists/* COPY --from=deps /app/node_modules ./node_modules COPY . . RUN npx prisma generate +ENV NEXT_TELEMETRY_DISABLED=1 RUN npm run build -FROM node:20-alpine AS runner +# ---- runtime ---- +FROM node:20-bookworm-slim AS runtime WORKDIR /app +RUN apt-get update && apt-get install -y --no-install-recommends \ + openssl ca-certificates tini tzdata \ + && rm -rf /var/lib/apt/lists/* ENV NODE_ENV=production +ENV NEXT_TELEMETRY_DISABLED=1 +ENV PORT=3000 +ENV TZ=America/Chicago -RUN addgroup -S moonbase && adduser -S moonbase -G moonbase +COPY --from=build /app/package.json /app/package-lock.json* ./ +COPY --from=build /app/node_modules ./node_modules +COPY --from=build /app/.next ./.next +COPY --from=build /app/public ./public +COPY --from=build /app/prisma ./prisma +COPY --from=build /app/next.config.mjs ./ +COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh +RUN chmod +x /usr/local/bin/docker-entrypoint.sh -COPY --from=builder /app/public ./public -COPY --from=builder /app/.next/standalone ./ -COPY --from=builder /app/.next/static ./.next/static -COPY --from=builder /app/prisma ./prisma -COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma -COPY --from=builder /app/node_modules/@prisma ./node_modules/@prisma -COPY --from=builder /app/node_modules/prisma ./node_modules/prisma -COPY --from=builder /app/node_modules/.bin/prisma ./node_modules/.bin/prisma -COPY docker-entrypoint.sh ./ -RUN chmod +x docker-entrypoint.sh - -USER moonbase EXPOSE 3000 - -ENTRYPOINT ["./docker-entrypoint.sh"] +ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"] +CMD ["npm", "run", "start"] diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index c69c58a..0fd91bd 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -1,8 +1,7 @@ #!/bin/sh set -e -echo "Running Prisma migrations..." -./node_modules/.bin/prisma migrate deploy +echo "[moonbase] running prisma migrate deploy..." +npx prisma migrate deploy -echo "Starting Moon Base..." -exec node server.js +exec "$@" diff --git a/next.config.mjs b/next.config.mjs index 73201d7..68a8854 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -1,6 +1,5 @@ /** @type {import('next').NextConfig} */ const nextConfig = { - output: "standalone", images: { remotePatterns: [{ protocol: "https", hostname: "**" }], }, diff --git a/src/lib/changelog.ts b/src/lib/changelog.ts index 8bff247..2392583 100644 --- a/src/lib/changelog.ts +++ b/src/lib/changelog.ts @@ -8,6 +8,13 @@ export type ChangelogEntry = { }; export const CHANGELOG: ChangelogEntry[] = [ + { + version: "0.5.2", + date: "2026-06-15", + changes: [ + "Fixed the app failing to start on the home server — it now launches and runs reliably.", + ], + }, { version: "0.5.1", date: "2026-06-15", diff --git a/src/lib/version.ts b/src/lib/version.ts index 3d947c0..43151a8 100644 --- a/src/lib/version.ts +++ b/src/lib/version.ts @@ -1,2 +1,2 @@ // Bump on every user-visible release. Changelog entries live in `src/lib/changelog.ts`. -export const APP_VERSION = "0.5.1"; +export const APP_VERSION = "0.5.2";