FROM node:16-alpine # Set working directory WORKDIR /usr/app # Install PM2 globally RUN npm install --global pm2 # Copy package.json and package-lock.json before other files # Utilise Docker cache to save re-installing dependencies if unchanged COPY ./package*.json ./ # Install dependencies RUN npm install --production # Copy all files COPY ./ ./ COPY /docker/entrypoint.sh ./entrypoint.sh # Build app RUN npm run build RUN chmod u+x /usr/app/entrypoint.sh # Expose the listening port EXPOSE 3000 # apply env variables to the Nextjs .env file ENTRYPOINT ["/usr/app/entrypoint.sh"] CMD npm run start