Files
web-hosts/chuckie.coppertone.tech/app/Dockerfile
2025-12-26 13:38:04 +01:00

63 lines
1.6 KiB
Docker

# Use Node.js base image
FROM docker.io/library/node:18-slim
# Install pnpm globally
RUN npm install -g pnpm && \
pnpm config set fetch-retries 5 && \
pnpm config set fetch-retry-mintimeout 20000 && \
pnpm config set fetch-retry-maxtimeout 120000
# Set working directory
WORKDIR /app
# Avoid pnpm interactive prompts during container builds
ENV CI=true
# Copy package files
COPY package.json pnpm-lock.yaml ./
COPY .env .env
COPY serve.json ./
# Install root dependencies with pnpm
RUN pnpm install
# Build-time config for Vite (set via docker-compose build args)
ARG VITE_API_BASE
ARG VITE_CANVA_CLIENT_ID
ARG VITE_CANVA_DEFAULT_DESIGN_TYPE
ARG VITE_CANVA_PANEL_URL
ARG VITE_AUTH0_DOMAIN
ARG VITE_AUTH0_CLIENT_ID
ARG VITE_AUTH0_AUDIENCE
ARG VITE_AUTH0_REDIRECT_URI
ENV VITE_API_BASE=${VITE_API_BASE}
ENV VITE_CANVA_CLIENT_ID=${VITE_CANVA_CLIENT_ID}
ENV VITE_CANVA_DEFAULT_DESIGN_TYPE=${VITE_CANVA_DEFAULT_DESIGN_TYPE}
ENV VITE_CANVA_PANEL_URL=${VITE_CANVA_PANEL_URL}
ENV VITE_AUTH0_DOMAIN=${VITE_AUTH0_DOMAIN}
ENV VITE_AUTH0_CLIENT_ID=${VITE_AUTH0_CLIENT_ID}
ENV VITE_AUTH0_AUDIENCE=${VITE_AUTH0_AUDIENCE}
ENV VITE_AUTH0_REDIRECT_URI=${VITE_AUTH0_REDIRECT_URI}
# Copy frontend directory
COPY frontend/ ./frontend/
# Set working directory to frontend and install frontend dependencies
WORKDIR /app/frontend
RUN pnpm install
# Build the frontend application
RUN pnpm build
# Install serve to serve the static files
RUN npm install -g serve
# Change back to main directory to serve the dist folder
WORKDIR /app
# Expose port
EXPOSE 8080
# Serve the application
CMD ["serve", "-s", "dist", "-l", "8080"]