diff --git a/apps/frontend/Dockerfile b/apps/frontend/Dockerfile index 6c64f5d..dabd27d 100644 --- a/apps/frontend/Dockerfile +++ b/apps/frontend/Dockerfile @@ -3,15 +3,13 @@ FROM fascinated/docker-images:nodejs_20_with_pnpm AS base FROM base AS builder RUN apk update RUN apk add --no-cache libc6-compat -# Set working directory WORKDIR /app RUN pnpm i -g turbo@^2 COPY . . -# Generate a partial monorepo with a pruned lockfile for a target workspace. -# Assuming "frontend" is the name entered in the project's package.json: { name: "frontend" } -RUN turbo prune frontend --docker +# Temporarily skip prune for debugging +# RUN turbo prune frontend --docker # Add lockfile and package.json's of isolated subworkspace FROM base AS installer @@ -19,11 +17,9 @@ RUN apk update RUN apk add --no-cache python3 make g++ gcc pkgconfig pixman cairo-dev libjpeg-turbo-dev pango-dev giflib-dev WORKDIR /app -# Add the commit hash ARG GIT_REV ENV GIT_REV=${GIT_REV} -# Add the sentry auth token ARG SENTRY_AUTH_TOKEN ENV SENTRY_AUTH_TOKEN=${SENTRY_AUTH_TOKEN} @@ -32,10 +28,13 @@ ENV NEXT_TELEMETRY_DISABLED=1 RUN pnpm i -g turbo@^2 -# First install the dependencies (as they change less often) +# Install dependencies after copying pruned lockfile COPY --from=builder /app/out/json/ . RUN pnpm install --frozen-lockfile --quiet +# Debug step to verify pruned output +RUN ls -al /app/out/full + # Build the project COPY --from=builder /app/out/full/ . RUN pnpm turbo run build --filter=frontend... @@ -46,22 +45,22 @@ WORKDIR /app ENV NODE_ENV=production ENV NEXT_TELEMETRY_DISABLED=1 -# Install runtime dependencies RUN apk add --no-cache cairo pango libjpeg-turbo giflib -# Add the commit hash ARG GIT_REV ENV GIT_REV=${GIT_REV} +# Debug to check .next output +RUN ls -al /app/apps/frontend/.next/standalone + # Don't run production as root RUN addgroup --system --gid 1001 nodejs RUN adduser --system --uid 1001 nextjs USER nextjs -# Automatically leverage output traces to reduce image size -# https://nextjs.org/docs/advanced-features/output-file-tracing +# Copy build output COPY --from=installer --chown=nextjs:nodejs /app/apps/frontend/.next/standalone ./ COPY --from=installer --chown=nextjs:nodejs /app/apps/frontend/.next/static ./apps/frontend/.next/static COPY --from=installer --chown=nextjs:nodejs /app/apps/frontend/public ./apps/frontend/public -CMD node apps/frontend/server.js \ No newline at end of file +CMD node apps/frontend/server.js diff --git a/apps/frontend/src/instrumentation.ts b/apps/frontend/src/instrumentation.ts index ae8cc8b..ecb6528 100644 --- a/apps/frontend/src/instrumentation.ts +++ b/apps/frontend/src/instrumentation.ts @@ -2,11 +2,11 @@ import * as Sentry from "@sentry/nextjs"; export async function register() { if (process.env.NEXT_RUNTIME === "nodejs") { - await import("../sentry.server.config.js"); + await import("../sentry.server.config"); } if (process.env.NEXT_RUNTIME === "edge") { - await import("../sentry.edge.config.js"); + await import("../sentry.edge.config"); } } diff --git a/apps/frontend/tsconfig.json b/apps/frontend/tsconfig.json index ad8eae4..44e4b42 100644 --- a/apps/frontend/tsconfig.json +++ b/apps/frontend/tsconfig.json @@ -10,8 +10,8 @@ "noEmit": true, "incremental": true, "esModuleInterop": true, - "module": "NodeNext", - "moduleResolution": "NodeNext", + "module": "ESNext", + "moduleResolution": "Bundler", "resolveJsonModule": true, "isolatedModules": true, "jsx": "preserve",