hexabot/widget/Dockerfile
2024-09-10 10:50:11 +01:00

38 lines
953 B
Docker

# Base stage: Base image for all stages
FROM node:18-alpine AS base
WORKDIR /app
COPY package*.json ./
# Set the environment variables
ARG REACT_APP_WIDGET_API_URL
ARG REACT_APP_WIDGET_CHANNEL
ARG REACT_APP_WIDGET_TOKEN
ENV REACT_APP_WIDGET_API_URL=${REACT_APP_WIDGET_API_URL}
ENV REACT_APP_WIDGET_CHANNEL=${REACT_APP_WIDGET_CHANNEL}
ENV REACT_APP_WIDGET_TOKEN=${REACT_APP_WIDGET_TOKEN}
# Installer stage: Installs dependencies
FROM base AS installer
COPY . .
RUN npm install
# Development stage: Installs development dependencies and serves the app
FROM installer AS development
ENV NODE_ENV=development
EXPOSE 5173
CMD ["npm", "run", "dev"]
# Builder stage: Builds the app
FROM installer AS builder
ENV NODE_ENV=production
RUN npm run build
# Production stage: Serves the app
FROM base AS production
ENV NODE_ENV=production
COPY --from=builder /app/dist /app/dist
RUN npm install -g serve
EXPOSE 5173
CMD ["serve", "-s", "dist", "-l", "5173"]