agentops/app/dashboard/Dockerfile

55 lines
1.5 KiB
Docker

# Builder stage
FROM node:20-alpine as builder
# Declare ARG variables that will be used during build
ARG NEXT_PUBLIC_SUPABASE_URL
ARG NEXT_PUBLIC_SUPABASE_ANON_KEY
ARG NEXT_PUBLIC_API_URL
ARG NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY
# Set working directory
WORKDIR /app
# Copy package files
COPY package*.json ./
# Install dependencies with cache mount
RUN npm install
# Copy project files
COPY . .
# Build the Next.js application with build-time env vars
ENV NEXT_PUBLIC_SUPABASE_URL=$NEXT_PUBLIC_SUPABASE_URL
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=$NEXT_PUBLIC_SUPABASE_ANON_KEY
ENV NEXT_PUBLIC_API_URL=$NEXT_PUBLIC_API_URL
ENV NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=$NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY
RUN --mount=type=cache,id=s/17c760dd-6886-4c45-a5c1-0b8a9b99a63d-/app/.next/cache,target=/app/.next/cache \
npm run build
# Production stage
FROM node:20-alpine
WORKDIR /app
# Copy necessary files from builder
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/.next ./.next
COPY --from=builder /app/public ./public
COPY --from=builder /app/node_modules ./node_modules
COPY --from=builder /app/next.config.js ./next.config.js
# Expose port 3000
EXPOSE 3000
# Runtime environment variables
ENV NEXT_PUBLIC_SUPABASE_URL=""
ENV NEXT_PUBLIC_SUPABASE_ANON_KEY=""
ENV NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY=""
# Start the application
CMD echo "Runtime SUPABASE_URL: $NEXT_PUBLIC_SUPABASE_URL" && \
echo "Runtime SUPABASE_KEY: ${NEXT_PUBLIC_SUPABASE_ANON_KEY:0:8}..." && \
npm run start