Deploy prep: Dockerfiles for admin (Next standalone) + scheduler (Bun)
admin/Dockerfile: 2-stage monorepo Next.js standalone (outputFileTracingRoot added to next.config so the bundle traces workspace deps). scheduler/Dockerfile: single-stage Bun runtime, validated by a local docker build. .dockerignore excludes node_modules/.next/.turbo/.git. Build context = monorepo root; runtime env DATABASE_URL + REDIS_URL. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
**/node_modules
|
||||
**/.next
|
||||
**/.turbo
|
||||
.git
|
||||
**/dist
|
||||
**/coverage
|
||||
docs
|
||||
*.md
|
||||
infra/docker-compose.yml
|
||||
@@ -0,0 +1,21 @@
|
||||
# Stargue Publishing Engine — admin dashboard (Next.js standalone, monorepo).
|
||||
# Build context: the monorepo ROOT. Build: docker build -f apps/admin/Dockerfile .
|
||||
|
||||
FROM oven/bun:1 AS builder
|
||||
WORKDIR /app
|
||||
COPY package.json bun.lock turbo.json tsconfig.json ./
|
||||
COPY packages ./packages
|
||||
COPY apps ./apps
|
||||
RUN bun install --frozen-lockfile
|
||||
RUN bun --filter @stargue/admin run build
|
||||
|
||||
FROM oven/bun:1-slim AS runner
|
||||
WORKDIR /app
|
||||
ENV NODE_ENV=production
|
||||
ENV PORT=3002
|
||||
# Next standalone (outputFileTracingRoot = repo root) emits apps/admin/server.js
|
||||
# plus a traced node_modules under .next/standalone.
|
||||
COPY --from=builder /app/apps/admin/.next/standalone ./
|
||||
COPY --from=builder /app/apps/admin/.next/static ./apps/admin/.next/static
|
||||
EXPOSE 3002
|
||||
CMD ["bun", "apps/admin/server.js"]
|
||||
@@ -1,8 +1,11 @@
|
||||
import type { NextConfig } from "next";
|
||||
import { join } from "node:path";
|
||||
|
||||
const config: NextConfig = {
|
||||
output: "standalone",
|
||||
reactStrictMode: true,
|
||||
// Trace workspace deps from the monorepo root so the standalone bundle is self-contained.
|
||||
outputFileTracingRoot: join(import.meta.dirname, "../../"),
|
||||
// The admin app is server-rendered (DB-backed, auth-gated); never statically exported.
|
||||
transpilePackages: ["@stargue/schema", "@stargue/sanitize", "@stargue/observability"],
|
||||
};
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
# Stargue Publishing Engine — scheduler (BullMQ worker, runs on Bun, no build step).
|
||||
# Build context: the monorepo ROOT. Build: docker build -f apps/scheduler/Dockerfile .
|
||||
|
||||
FROM oven/bun:1-slim
|
||||
WORKDIR /app
|
||||
ENV NODE_ENV=production
|
||||
COPY package.json bun.lock turbo.json ./
|
||||
COPY packages ./packages
|
||||
COPY apps ./apps
|
||||
COPY db ./db
|
||||
RUN bun install --frozen-lockfile
|
||||
# Env required at runtime: DATABASE_URL, REDIS_URL
|
||||
CMD ["bun", "apps/scheduler/src/main.ts"]
|
||||
Reference in New Issue
Block a user