# Use the official Node.js image from Docker Hub | |
FROM node:18 AS build | |
# Set the working directory | |
WORKDIR /usr/src/app | |
# Copy package.json and package-lock.json for installing dependencies | |
COPY package.json package-lock.json ./ | |
# Install dependencies | |
RUN npm install | |
# Copy the entire project | |
COPY . . | |
# Build the project | |
RUN npm run build | |
# Use a smaller image for the production environment | |
FROM node:18-alpine | |
# Set environment to production | |
ENV NODE_ENV production | |
# Set the working directory | |
WORKDIR /usr/src/app | |
# Copy from the "build" stage | |
COPY --from=build /usr/src/app/.next ./.next | |
COPY --from=build /usr/src/app/package.json ./package.json | |
COPY --from=build /usr/src/app/package-lock.json ./package-lock.json | |
# Install only production dependencies | |
RUN npm install --production | |
EXPOSE 3000 | |
ENV PORT 3000 | |
# Command to run the application | |
CMD ["npm", "start"] | |