I try to dockerize a Next.js app with a combined image for dev and prod.
So I have the Dockerfile as follows:
FROM node:17.1.0-alpine3.12 AS development
WORKDIR /app
ENV HOST=0.0.0.0
ENV PORT=3000
ENV NODE_ENV=development
EXPOSE 3000
CMD [ "yarn", "dev" ]
FROM node:17.1.0-alpine3.12 AS dependencies
ENV NODE_ENV=production
WORKDIR /app
COPY package.json yarn.lock ./
RUN yarn install --frozen-lockfile
FROM node:17.1.0-alpine3.12 AS builder
ENV NODE_ENV=development
WORKDIR /app
COPY . .
RUN yarn install --frozen-lockfile && NODE_ENV=production yarn build
FROM node:17.1.0-alpine3.12 AS production
WORKDIR /app
ENV HOST=0.0.0.0
ENV PORT=3000
ENV NODE_ENV=production
COPY --chown=node --from=builder /app/next.config.js ./
COPY --chown=node --from=builder /app/public ./public
COPY --chown=node --from=builder /app/.next ./.next
COPY --chown=node --from=builder /app/yarn.lock /app/package.json ./
COPY --chown=node --from=dependencies /app/node_modules ./node_modules
USER node
EXPOSE 3000
CMD [ "yarn", "start" ]
But if I try to build the image with the command:
docker build -t frontend-prod --target production .
I get this error:
Dockerfile:20
--------------------
18 | WORKDIR /app
19 | COPY . .
20 | >>> RUN yarn install --frozen-lockfile && NODE_ENV=production yarn build
21 |
22 | FROM node:17.1.0-alpine3.12 AS production
--------------------
ERROR: failed to solve: process "/bin/sh -c yarn install --frozen-lockfile && NODE_ENV=production yarn build" did not complete successfully: exit code: 1
How to resolve the error?