- Add IndexNow submit script + state tracking - Update deploy script to notify IndexNow after healthy deploy - Publish IndexNow verification file in public - Update sitemaps and add env placeholders - Pass analytics/ads/IndexNow env vars into frontend build
80 lines
2.0 KiB
Docker
80 lines
2.0 KiB
Docker
# ---- Build Stage ----
|
|
FROM node:20-alpine AS build
|
|
|
|
WORKDIR /app
|
|
|
|
ARG VITE_GA_MEASUREMENT_ID
|
|
ARG VITE_PLAUSIBLE_DOMAIN
|
|
ARG VITE_PLAUSIBLE_SRC
|
|
ARG VITE_GOOGLE_SITE_VERIFICATION
|
|
ARG VITE_ADSENSE_CLIENT_ID
|
|
ARG VITE_ADSENSE_SLOT_HOME_TOP
|
|
ARG VITE_ADSENSE_SLOT_HOME_BOTTOM
|
|
ARG VITE_ADSENSE_SLOT_TOP_BANNER
|
|
ARG VITE_ADSENSE_SLOT_BOTTOM_BANNER
|
|
ARG VITE_FEATURE_EDITOR
|
|
ARG VITE_FEATURE_OCR
|
|
ARG VITE_FEATURE_REMOVEBG
|
|
ARG VITE_SITE_DOMAIN
|
|
ARG VITE_SENTRY_DSN
|
|
ARG VITE_CLARITY_PROJECT_ID
|
|
ARG INDEXNOW_KEY
|
|
ARG INDEXNOW_ENDPOINT
|
|
ARG INDEXNOW_STRICT
|
|
|
|
ENV VITE_GA_MEASUREMENT_ID=$VITE_GA_MEASUREMENT_ID \
|
|
VITE_PLAUSIBLE_DOMAIN=$VITE_PLAUSIBLE_DOMAIN \
|
|
VITE_PLAUSIBLE_SRC=$VITE_PLAUSIBLE_SRC \
|
|
VITE_GOOGLE_SITE_VERIFICATION=$VITE_GOOGLE_SITE_VERIFICATION \
|
|
VITE_ADSENSE_CLIENT_ID=$VITE_ADSENSE_CLIENT_ID \
|
|
VITE_ADSENSE_SLOT_HOME_TOP=$VITE_ADSENSE_SLOT_HOME_TOP \
|
|
VITE_ADSENSE_SLOT_HOME_BOTTOM=$VITE_ADSENSE_SLOT_HOME_BOTTOM \
|
|
VITE_ADSENSE_SLOT_TOP_BANNER=$VITE_ADSENSE_SLOT_TOP_BANNER \
|
|
VITE_ADSENSE_SLOT_BOTTOM_BANNER=$VITE_ADSENSE_SLOT_BOTTOM_BANNER \
|
|
VITE_FEATURE_EDITOR=$VITE_FEATURE_EDITOR \
|
|
VITE_FEATURE_OCR=$VITE_FEATURE_OCR \
|
|
VITE_FEATURE_REMOVEBG=$VITE_FEATURE_REMOVEBG \
|
|
VITE_SITE_DOMAIN=$VITE_SITE_DOMAIN \
|
|
VITE_SENTRY_DSN=$VITE_SENTRY_DSN \
|
|
VITE_CLARITY_PROJECT_ID=$VITE_CLARITY_PROJECT_ID \
|
|
INDEXNOW_KEY=$INDEXNOW_KEY \
|
|
INDEXNOW_ENDPOINT=$INDEXNOW_ENDPOINT \
|
|
INDEXNOW_STRICT=$INDEXNOW_STRICT
|
|
|
|
# Install dependencies
|
|
COPY package.json ./
|
|
RUN npm install
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
# Build for production
|
|
RUN npm run build
|
|
|
|
# ---- Production Stage ----
|
|
FROM nginx:alpine AS production
|
|
|
|
# Copy built assets
|
|
COPY --from=build /app/dist /usr/share/nginx/html
|
|
|
|
# Copy nginx config for SPA routing
|
|
COPY nginx-frontend.conf /etc/nginx/conf.d/default.conf
|
|
|
|
EXPOSE 80
|
|
|
|
CMD ["nginx", "-g", "daemon off;"]
|
|
|
|
# ---- Development Stage ----
|
|
FROM node:20-alpine AS development
|
|
|
|
WORKDIR /app
|
|
|
|
COPY package.json ./
|
|
RUN npm install
|
|
|
|
COPY . .
|
|
|
|
EXPOSE 5173
|
|
|
|
CMD ["npm", "run", "dev", "--", "--host", "0.0.0.0"]
|