mirror of
https://github.com/Routstr/routstr-core.git
synced 2026-07-22 12:22:20 +00:00
39 lines
1.2 KiB
Docker
39 lines
1.2 KiB
Docker
FROM node:23-alpine AS base
|
|
|
|
# Install dependencies only when needed
|
|
FROM base AS deps
|
|
RUN apk add --no-cache libc6-compat
|
|
WORKDIR /app
|
|
|
|
# Copy package files
|
|
COPY package.json pnpm-lock.yaml* pnpm-workspace.yaml* ./
|
|
RUN corepack enable pnpm && corepack prepare pnpm@10.15.0 --activate
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
# Build the UI
|
|
FROM base AS builder
|
|
WORKDIR /app
|
|
RUN corepack enable pnpm && corepack prepare pnpm@10.15.0 --activate
|
|
COPY --from=deps /app/node_modules ./node_modules
|
|
COPY . .
|
|
|
|
# Accept build arguments for environment variables
|
|
ARG NEXT_PUBLIC_API_URL
|
|
|
|
# Create .env.local for Next.js with build arguments
|
|
RUN echo "NEXT_PUBLIC_API_URL=${NEXT_PUBLIC_API_URL}" > .env.local && \
|
|
echo "Using NEXT_PUBLIC_API_URL: ${NEXT_PUBLIC_API_URL}"
|
|
|
|
# Set production environment
|
|
ENV NODE_ENV=production
|
|
ENV NEXT_TELEMETRY_DISABLED=1
|
|
|
|
# Build the application
|
|
RUN pnpm run build && \
|
|
echo "UI build completed at $(date)"
|
|
|
|
# Use the builder stage as the final stage
|
|
FROM node:23-alpine
|
|
WORKDIR /app
|
|
COPY --from=builder /app/out /app/built
|
|
CMD ["sh", "-c", "mkdir -p /output && cp -r /app/built/. /output/ && echo 'UI build copied to mounted volume' && ls -la /output/ && echo 'UI built and ready' && tail -f /dev/null"] |