Spaces:
Sleeping
Sleeping
# ---- BUILD STAGE ---- | |
FROM node:20-slim AS builder | |
# Set working directory | |
WORKDIR /app | |
# Copy package.json and package-lock.json | |
COPY ./package*.json ./ | |
COPY ./jina-ai/package*.json ./jina-ai/ | |
# Install dependencies | |
RUN npm ci | |
WORKDIR /app/jina-ai | |
RUN npm ci | |
WORKDIR /app | |
# Copy application code | |
COPY ./src ./src | |
COPY ./tsconfig.json ./tsconfig.json | |
COPY ./jina-ai/config.json ./ | |
RUN npm run build | |
COPY ./jina-ai/src ./jina-ai/src | |
COPY ./jina-ai/tsconfig.json ./jina-ai/tsconfig.json | |
WORKDIR /app/jina-ai | |
RUN npm run build | |
# ---- PRODUCTION STAGE ---- | |
FROM node:20 AS production | |
# Set working directory | |
WORKDIR /app | |
COPY --from=builder /app ./ | |
# Copy config.json and built files from builder | |
WORKDIR /app/jina-ai | |
# Set environment variables (Recommended to set at runtime, avoid hardcoding) | |
ENV GEMINI_API_KEY=${GEMINI_API_KEY} | |
ENV OPENAI_API_KEY=${OPENAI_API_KEY} | |
ENV JINA_API_KEY=${JINA_API_KEY} | |
ENV BRAVE_API_KEY=${BRAVE_API_KEY} | |
# Expose the port the app runs on | |
EXPOSE 3000 | |
# Set startup command | |
CMD ["node", "./dist/server.js"] | |