diff --git a/Dockerfile b/Dockerfile index 0873829c..5ffddaa6 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,21 +1,45 @@ -FROM node:18-alpine +# +# First stage: build the app +# +FROM node:18-alpine AS builder WORKDIR /usr/src/app -# Install curl(for taxi-watchtower) and pnpm -RUN apk update && apk add curl && npm install --global pnpm@8.8.0 +# Install pnpm +RUN npm install --global pnpm@8.8.0 # pnpm fetch does require only lockfile COPY pnpm-lock.yaml . +RUN pnpm fetch + +COPY . . +RUN pnpm install --offline +RUN pnpm build + +# +# Second stage: run the app +# +FROM node:18-alpine + +WORKDIR /usr/src/app + +# Install pnpm +RUN npm install --global pnpm@8.8.0 + +# Install curl for taxi-watchtower +RUN apk update && apk add curl -# Note: devDependencies are not fetched +# devDependencies are not fetched +COPY pnpm-lock.yaml . RUN pnpm fetch --prod -# Copy repository and install dependencies -ADD . ./ +COPY package.json . RUN pnpm install --offline --prod +# Copy the built app from the previous stage +COPY --from=builder /usr/src/app/dist ./dist + # Run container EXPOSE 80 ENV PORT 80 -CMD ["pnpm", "run", "serve"] +CMD ["pnpm", "serve"]