Changed Dockerfile

This commit is contained in:
Jose Selesan
2026-04-09 10:43:19 -03:00
parent 2a0558347a
commit 063991770a
6 changed files with 57 additions and 121 deletions

View File

@@ -6,6 +6,7 @@ WORKDIR /app
# Workspace manifests first for better layer caching.
COPY package.json bun.lock ./
COPY apps/backend/package.json apps/backend/package.json
COPY apps/frontend/package.json apps/frontend/package.json
COPY packages/api-contract/package.json packages/api-contract/package.json
RUN bun install --frozen-lockfile
@@ -14,12 +15,23 @@ FROM deps AS build
WORKDIR /app
COPY apps/backend apps/backend
COPY apps/frontend apps/frontend
COPY packages/api-contract packages/api-contract
# Build-time variables for Vite.
ARG VITE_API_BASE_URL
ARG VITE_SUPABASE_URL
ARG VITE_SUPABASE_ANON_KEY
ENV VITE_API_BASE_URL=${VITE_API_BASE_URL}
ENV VITE_SUPABASE_URL=${VITE_SUPABASE_URL}
ENV VITE_SUPABASE_ANON_KEY=${VITE_SUPABASE_ANON_KEY}
# Prisma 7 config resolves DATABASE_URL at generate time.
ARG DATABASE_URL=postgresql://postgres:postgres@localhost:5432/postgres
ENV DATABASE_URL=${DATABASE_URL}
RUN bun --filter frontend build
RUN mkdir -p apps/backend/public && cp -R apps/frontend/dist/. apps/backend/public/
RUN bun --cwd apps/backend run prisma:generate
FROM oven/bun:1.3-slim AS runner

View File

@@ -1,5 +1,7 @@
import { registerApiRoutes } from '@repo/api-contract'
import type { Hono } from 'hono'
import { serveStatic } from 'hono/bun'
import path from 'node:path'
import { complexRoutes } from '@/modules/complex/complex.routes'
import { courtRoutes } from '@/modules/court/court.routes'
import { onboardingRoutes } from '@/modules/onboarding/onboarding.routes'
@@ -20,4 +22,23 @@ export function registerRoutes(app: Hono<AppEnv>) {
})
app.route('/api/public-bookings', publicBookingRoutes)
app.use('*', serveStatic({ root: './public' }))
app.get('*', async (c) => {
if (c.req.path === '/api' || c.req.path.startsWith('/api/')) {
return c.notFound()
}
// Keep real asset URLs as 404s if the file does not exist.
if (path.extname(c.req.path)) {
return c.notFound()
}
const indexFile = Bun.file('./public/index.html')
if (!(await indexFile.exists())) {
return c.notFound()
}
return c.html(await indexFile.text())
})
}