Files
ExcaliDash/frontend/Dockerfile
Adrian Acala f9986513f8 Refactor nginx configuration and update README
- Moved BACKEND_URL configuration to the frontend service in the README.
- Added validation for the generated nginx configuration in the entrypoint script.
- Removed fallback nginx configuration copy from the Dockerfile.
- Adjusted nginx template to ensure proper header formatting.

This improves the deployment process and clarifies configuration instructions.
2025-11-29 11:29:43 -08:00

46 lines
1.1 KiB
Docker

# Build stage
FROM node:20-alpine AS builder
WORKDIR /app/frontend
# Copy package files first for better caching
COPY frontend/package*.json ./
# Install dependencies
RUN npm ci
# Copy source code and config files
COPY frontend/ ./
COPY VERSION ../VERSION
# Build arguments
ARG VITE_APP_VERSION
ARG VITE_APP_BUILD_LABEL
ENV VITE_APP_VERSION=$VITE_APP_VERSION
ENV VITE_APP_BUILD_LABEL=$VITE_APP_BUILD_LABEL
# Build the application
RUN npm run build
# Production stage
FROM nginx:alpine
# Install envsubst (gettext) so we can template nginx config at runtime
RUN apk add --no-cache gettext
# Copy nginx config template (will be processed at runtime)
COPY frontend/nginx.conf.template /etc/nginx/nginx.conf.template
# Copy entrypoint script
COPY frontend/docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
# Copy built application from builder
COPY --from=builder /app/frontend/dist /usr/share/nginx/html
EXPOSE 80
# Use custom entrypoint to process nginx config template
ENTRYPOINT ["/docker-entrypoint.sh"]
CMD ["nginx", "-g", "daemon off;"]