FROM node:20-slim AS base

WORKDIR /app

COPY package*.json ./
RUN npm ci


FROM base AS dev

COPY . ./

EXPOSE 5173

CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0", "--port", "5173"]


FROM base AS build

COPY . ./
RUN npm run build


FROM node:20-slim AS prod

WORKDIR /app

RUN npm install -g http-server

COPY --from=build /app/dist ./

EXPOSE 8000

HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
    CMD node -e "require('http').get('http://localhost:8000/index.html', (res) => process.exit(res.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))"

CMD ["http-server", ".", "-p", "8000", "-c-1", "--gzip", "-P", "http://localhost:8000?"]
