Files
classroomio/apps/dashboard/Dockerfile.prod
T

56 lines
1.4 KiB
Docker
Raw Normal View History

# FROM node:18-alpine
# WORKDIR /app
# RUN npm install -g pnpm
# COPY . .
# # Install dependencies and build
# RUN pnpm install --frozen-lockfile && \
# cd apps/dashboard && \
# pnpm build || { echo "Build failed! Error output above."; exit 1; }
# EXPOSE 5004
# ENV NODE_ENV=production
# CMD [ "pnpm", "dashboard:start" ]
FROM node:18-alpine AS builder
WORKDIR /app
RUN npm install -g pnpm
COPY package.json .
COPY pnpm-lock.yaml .
RUN pnpm install --frozen-lockfile
COPY . .
# Set environment variables
ENV IS_SELFHOSTED=true
ENV DEPLOYMENT_PROVIDER=docker
ENV PUBLIC_SUPABASE_URL=$PUBLIC_SUPABASE_URL
ENV PUBLIC_SUPABASE_ANON_KEY=$PUBLIC_SUPABASE_ANON_KEY
ENV PRIVATE_SUPABASE_SERVICE_ROLE=$PRIVATE_SUPABASE_SERVICE_ROLE
ENV PRIVATE_APP_HOST=$PRIVATE_APP_HOST
ENV PRIVATE_APP_SUBDOMAINS=$PRIVATE_APP_SUBDOMAINS
ENV UNSPLASH_API_KEY=$UNSPLASH_API_KEY
ENV OPENAI_API_KEY=$OPENAI_API_KEY
ENV PUBLIC_SERVER_URL=$PUBLIC_SERVER_URL
ENV PUBLIC_IP_REGISTRY_KEY=$PUBLIC_IP_REGISTRY_KEY
ENV NODE_OPTIONS="--max-old-space-size=10240"
WORKDIR /app/apps/dashboard
RUN pnpm install --frozen-lockfile
RUN IS_SELFHOSTED=true DEPLOYMENT_PROVIDER=docker pnpm build
RUN pnpm prune --production
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/apps/dashboard/build build/
COPY --from=builder /app/apps/dashboard/node_modules node_modules/
COPY package.json .
EXPOSE 3004
ENV NODE_ENV=production
CMD [ "node", "build" ]