koufatzis
08/03/2021, 11:51 AMRyan
08/03/2021, 11:53 AMkoufatzis
08/03/2021, 11:54 AMRyan
08/03/2021, 11:59 AMFROM node:14.9.0-alpine3.12 as dev
WORKDIR /app
RUN apk add --no-cache --virtual .build-deps alpine-sdk python3
COPY package.json yarn.lock ./
COPY prisma ./prisma
RUN yarn install --frozen-lockfile
# RUN apk del .build-deps
FROM node:14.9.0-alpine3.12
WORKDIR /app
COPY --from=dev /app/package.json /app/yarn.lock /app/prisma ./
RUN yarn install --frozen-lockfile --production && \
rm -rf node_modules/@prisma/engines
COPY . .
EXPOSE 3001
CMD [ "yarn", "start" ]
Ryan
08/03/2021, 11:59 AMkoufatzis
08/03/2021, 12:05 PM.dockerignore
when running COPY . .
?Ryan
08/03/2021, 12:08 PMnode_modules
koufatzis
08/03/2021, 12:09 PMkoufatzis
08/03/2021, 12:09 PMnode_modules
Ryan
08/03/2021, 12:30 PMprisma generate
when you run npm install
or yarn
.koufatzis
08/03/2021, 12:53 PMkoufatzis
08/03/2021, 12:53 PMFROM node:14-alpine AS builder
ARG PORT
WORKDIR /usr/src/app
COPY .npmrc ./
COPY package*.json ./
COPY tsconfig*.json ./
RUN npm install
COPY src src
COPY ./prisma ./prisma
RUN npx prisma generate
RUN npm run build
FROM node:14-alpine
ENV NODE_ENV=production
WORKDIR /usr/src/app
COPY .npmrc ./
COPY package*.json ./
COPY ./prisma ./prisma
RUN npm ci --only=production
RUN npm i -g prisma@2.28.0
RUN prisma generate
RUN rm -rf node_modules/@prisma/engines
COPY --from=builder /usr/src/app/dist dist
USER node
EXPOSE $PORT
CMD [ "node", "dist/server.js" ]
I have to use prisma generate 2 times one for the typescript compilation to succeed and one in the final image to have the artifacts of prisma generate. Copying them from step one did not work. Don’t know if I was doing something wrong thereRyan
08/03/2021, 12:55 PMCOPY ./prisma ./prisma
before npm install
, you don’t need to run prisma generate
explicitly.Ryan
08/03/2021, 12:56 PMkoufatzis
08/03/2021, 1:27 PMRyan
08/03/2021, 1:33 PMkoufatzis
08/04/2021, 12:36 PMdevDependencies
thoughRyan
08/04/2021, 12:46 PMnpm install --production
will skip all those 🙂