FROM node:22-alpine AS base

RUN apk update && apk add git

COPY package.json ./

RUN npm install
RUN npm install typescript -g

# add folder if needs more
COPY src ./src
COPY public ./public

COPY tsconfig.json ./tsconfig.json
COPY tsconfig.node.json ./tsconfig.node.json
COPY vite.config.ts ./vite.config.ts
COPY tailwind.config.js ./tailwind.config.js
COPY postcss.config.js ./postcss.config.js
COPY eslint.config.mjs ./eslint.config.mjs
COPY .env.production ./.env.production
COPY .prettierrc ./.prettierrc
COPY index.html ./index.html

RUN npm run build:production

FROM node:22-alpine

# Copy node modules and build directory from base image to new image
COPY --from=base ./node_modules ./node_modules
COPY --from=base ./package.json ./package.json
COPY --from=base /dist /dist
COPY --from=base /src /src
COPY --from=base /public /public

# Expose required port
FROM nginx:alpine
COPY --from=base /dist /usr/share/nginx/html

CMD ["nginx", "-g", "daemon off;"]