Next.js Discord

Discord Forum

API route execution paused

Answered
Brown bear posted this in #help-forum
Open in Discord
Brown bearOP
Hey guys, I am running nextjs in Docker and use an API route to do a bit more processing than it would be possible on Vercel due to API route limits. I thought this would be possible when self hosting but the execution of my route is somehow paused in between a function and continues around 3mins later, then stopping completely after this function without any err. The following code is just not executed any more. Any idea why this might happen?
Answered by Brown bear
nevermind one function was not properly awaited!
View full answer

8 Replies

European sprat
Show code and dockerfile
Brown bearOP
api route:
import type { NextApiRequest, NextApiResponse } from "next";
import {
  UploadResponseData,
  createUploadHandler,
} from "@/lib/createUploadHandler";

export const config = {
  api: {
    bodyParser: false,
    responseLimit: false,
  },
};

export default async function handler(
  req: NextApiRequest,
  res: NextApiResponse<UploadResponseData>
) {
  return createUploadHandler(req, res });
}


Code of createUploadHandler shouldn't be of interest, also because it's working on localhost.
Dockerfile:
FROM node:18-alpine AS base

ARG NEXT_PUBLIC_STRIPE_CHECKOUT_URL
ARG NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY
ENV NEXT_PUBLIC_STRIPE_CHECKOUT_URL $NEXT_PUBLIC_STRIPE_CHECKOUT_URL
ENV NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY $NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY
ENV DOCKER true

# Install dependencies only when needed
FROM base AS deps
# Check https://github.com/nodejs/docker-node/tree/b4117f9333da4138b03a546ec926ef50a31506c3#nodealpine to understand why libc6-compat might be needed.
RUN apk add --no-cache libc6-compat
WORKDIR /app

# Install dependencies based on the preferred package manager
COPY package.json yarn.lock* package-lock.json* pnpm-lock.yaml* ./
RUN \
  if [ -f yarn.lock ]; then yarn --frozen-lockfile; \
  elif [ -f package-lock.json ]; then npm ci; \
  elif [ -f pnpm-lock.yaml ]; then yarn global add pnpm && pnpm i --frozen-lockfile; \
  else echo "Lockfile not found." && exit 1; \
  fi

# Rebuild the source code only when needed
FROM base AS builder
WORKDIR /app
COPY --from=deps /app/node_modules ./node_modules
COPY . .

# Next.js collects completely anonymous telemetry data about general usage.
# Learn more here: https://nextjs.org/telemetry
# Uncomment the following line in case you want to disable telemetry during the build.
# ENV NEXT_TELEMETRY_DISABLED 1

RUN yarn build

# If using npm comment out above and use below instead
# RUN npm run build

# Production image, copy all the files and run next
FROM base AS runner
WORKDIR /app

RUN yarn global add @svgr/cli

ENV NODE_ENV production
# Uncomment the following line in case you want to disable telemetry during runtime.
# ENV NEXT_TELEMETRY_DISABLED 1

RUN addgroup --system --gid 1001 nodejs
RUN adduser --system --uid 1001 nextjs
RUN mkdir -p /app/data && chown -R nextjs:nodejs /app/data && chmod -R 775 /app/data
...
COPY --from=builder /app/public ./public

# Automatically leverage output traces to reduce image size
# https://nextjs.org/docs/advanced-features/output-file-tracing
COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./
COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static

USER nextjs

EXPOSE 3000

ENV PORT 3000

CMD ["node", "server.js"]
Brown bearOP
well no because text is returned immediately, is there some kind of limit here or is everything disabled with the bodyParser?
and the code runs through on my machine so I guess it has to do with production setup
Brown bearOP
nevermind one function was not properly awaited!
Answer