Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # syntax = docker/dockerfile:1
- # Adjust NODE_VERSION as desired
- ARG NODE_VERSION=20
- FROM node:${NODE_VERSION} as base
- LABEL fly_launch_runtime="Next.js"
- # Next.js app lives here
- WORKDIR /app
- ARG NEXT_PUBLIC_PUSHER_KEY
- ARG NEXT_PUBLIC_PUSHER_CLUSTER
- ARG SENTRY_RELEASE
- ARG NODE_ENV
- ARG NEXT_PUBLIC_DOMAIN
- ARG NEXT_PUBLIC_IMGIX_URL
- # Set environment variables based on arguments
- ENV NEXT_PUBLIC_PUSHER_KEY=$NEXT_PUBLIC_PUSHER_KEY
- ENV NEXT_PUBLIC_PUSHER_CLUSTER=$NEXT_PUBLIC_PUSHER_CLUSTER
- ENV SENTRY_RELEASE=$SENTRY_RELEASE
- ENV NODE_ENV=$NODE_ENV
- ENV NEXT_PUBLIC_DOMAIN=$NEXT_PUBLIC_DOMAIN
- ENV NEXT_PUBLIC_IMGIX_URL=$NEXT_PUBLIC_IMGIX_URL
- # Throw-away build stage to reduce size of final image
- FROM base as build
- # Install packages needed to build node modules
- RUN apt-get update -qq && \
- apt-get install --no-install-recommends -y build-essential node-gyp pkg-config python-is-python3
- # Install node modules
- COPY package-lock.json package.json ./
- RUN npm ci --include=dev
- # Copy application code
- COPY . .
- # Use all secrets from the build context
- RUN --mount=type=secret,id=ALL_SECRETS \
- eval "$(base64 -d /run/secrets/ALL_SECRETS)" && \
- echo "Using secrets during build!" && \
- npx prisma generate && \
- npm run build
- # Remove development dependencies
- RUN npm prune --omit=dev
- # Final stage for app image
- FROM base
- # Copy built application
- COPY --from=build /app /app
- # Start the server by default, this can be overwritten at runtime
- EXPOSE 3000
- CMD [ "npm", "run", "start" ]
Add Comment
Please, Sign In to add comment