Update Dockerfile
This commit is contained in:
committed by
GitHub
parent
4ca535b9d1
commit
f9f557409a
119
Dockerfile
119
Dockerfile
@@ -1,95 +1,56 @@
|
|||||||
ARG BASE=node:20.18.0
|
# ---- build stage ----
|
||||||
FROM ${BASE} AS base
|
FROM node:22-bookworm-slim AS build
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Install dependencies (this step is cached as long as the dependencies don't change)
|
# CI-friendly env
|
||||||
COPY package.json pnpm-lock.yaml ./
|
ENV HUSKY=0
|
||||||
|
ENV CI=true
|
||||||
|
|
||||||
#RUN npm install -g corepack@latest
|
# Use pnpm
|
||||||
|
RUN corepack enable && corepack prepare pnpm@9.15.9 --activate
|
||||||
|
|
||||||
#RUN corepack enable pnpm && pnpm install
|
# Accept (optional) build-time public URL for Remix/Vite (Coolify can pass it)
|
||||||
RUN npm install -g pnpm && pnpm install
|
ARG VITE_PUBLIC_APP_URL
|
||||||
|
ENV VITE_PUBLIC_APP_URL=${VITE_PUBLIC_APP_URL}
|
||||||
|
|
||||||
# Copy the rest of your app's source code
|
# Install deps efficiently
|
||||||
|
COPY package.json pnpm-lock.yaml* ./
|
||||||
|
RUN pnpm fetch
|
||||||
|
|
||||||
|
# Copy source and build
|
||||||
COPY . .
|
COPY . .
|
||||||
|
# install with dev deps (needed to build)
|
||||||
|
RUN pnpm install --offline --frozen-lockfile
|
||||||
|
|
||||||
# Expose the port the app runs on
|
# Build the Remix app (SSR + client)
|
||||||
EXPOSE 5173
|
RUN NODE_OPTIONS=--max-old-space-size=4096 pnpm run build
|
||||||
|
|
||||||
# Production image
|
# Keep only production deps for runtime
|
||||||
FROM base AS bolt-ai-production
|
RUN pnpm prune --prod --ignore-scripts
|
||||||
|
|
||||||
# Define environment variables with default values or let them be overridden
|
|
||||||
ARG GROQ_API_KEY
|
|
||||||
ARG HuggingFace_API_KEY
|
|
||||||
ARG OPENAI_API_KEY
|
|
||||||
ARG ANTHROPIC_API_KEY
|
|
||||||
ARG OPEN_ROUTER_API_KEY
|
|
||||||
ARG GOOGLE_GENERATIVE_AI_API_KEY
|
|
||||||
ARG OLLAMA_API_BASE_URL
|
|
||||||
ARG XAI_API_KEY
|
|
||||||
ARG TOGETHER_API_KEY
|
|
||||||
ARG TOGETHER_API_BASE_URL
|
|
||||||
ARG AWS_BEDROCK_CONFIG
|
|
||||||
ARG VITE_LOG_LEVEL=debug
|
|
||||||
ARG DEFAULT_NUM_CTX
|
|
||||||
|
|
||||||
ENV WRANGLER_SEND_METRICS=false \
|
# ---- runtime stage ----
|
||||||
GROQ_API_KEY=${GROQ_API_KEY} \
|
FROM node:22-bookworm-slim AS runtime
|
||||||
HuggingFace_KEY=${HuggingFace_API_KEY} \
|
WORKDIR /app
|
||||||
OPENAI_API_KEY=${OPENAI_API_KEY} \
|
|
||||||
ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} \
|
|
||||||
OPEN_ROUTER_API_KEY=${OPEN_ROUTER_API_KEY} \
|
|
||||||
GOOGLE_GENERATIVE_AI_API_KEY=${GOOGLE_GENERATIVE_AI_API_KEY} \
|
|
||||||
OLLAMA_API_BASE_URL=${OLLAMA_API_BASE_URL} \
|
|
||||||
XAI_API_KEY=${XAI_API_KEY} \
|
|
||||||
TOGETHER_API_KEY=${TOGETHER_API_KEY} \
|
|
||||||
TOGETHER_API_BASE_URL=${TOGETHER_API_BASE_URL} \
|
|
||||||
AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} \
|
|
||||||
VITE_LOG_LEVEL=${VITE_LOG_LEVEL} \
|
|
||||||
DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX}\
|
|
||||||
RUNNING_IN_DOCKER=true
|
|
||||||
|
|
||||||
# Pre-configure wrangler to disable metrics
|
ENV NODE_ENV=production
|
||||||
RUN mkdir -p /root/.config/.wrangler && \
|
ENV PORT=3000
|
||||||
echo '{"enabled":false}' > /root/.config/.wrangler/metrics.json
|
ENV HOST=0.0.0.0
|
||||||
|
|
||||||
RUN pnpm run build
|
# Install curl so Coolify’s healthcheck works inside the image
|
||||||
|
RUN apt-get update && apt-get install -y --no-install-recommends curl \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
CMD [ "pnpm", "run", "dockerstart"]
|
# Copy only what we need to run
|
||||||
|
COPY --from=build /app/build /app/build
|
||||||
|
COPY --from=build /app/node_modules /app/node_modules
|
||||||
|
COPY --from=build /app/package.json /app/package.json
|
||||||
|
|
||||||
# Development image
|
EXPOSE 3000
|
||||||
FROM base AS bolt-ai-development
|
|
||||||
|
|
||||||
# Define the same environment variables for development
|
# Healthcheck for Coolify
|
||||||
ARG GROQ_API_KEY
|
HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=5 \
|
||||||
ARG HuggingFace
|
CMD curl -fsS http://localhost:3000/ || exit 1
|
||||||
ARG OPENAI_API_KEY
|
|
||||||
ARG ANTHROPIC_API_KEY
|
|
||||||
ARG OPEN_ROUTER_API_KEY
|
|
||||||
ARG GOOGLE_GENERATIVE_AI_API_KEY
|
|
||||||
ARG OLLAMA_API_BASE_URL
|
|
||||||
ARG XAI_API_KEY
|
|
||||||
ARG TOGETHER_API_KEY
|
|
||||||
ARG TOGETHER_API_BASE_URL
|
|
||||||
ARG VITE_LOG_LEVEL=debug
|
|
||||||
ARG DEFAULT_NUM_CTX
|
|
||||||
|
|
||||||
ENV GROQ_API_KEY=${GROQ_API_KEY} \
|
# Start the Remix server
|
||||||
HuggingFace_API_KEY=${HuggingFace_API_KEY} \
|
CMD ["node", "build/server/index.js"]
|
||||||
OPENAI_API_KEY=${OPENAI_API_KEY} \
|
|
||||||
ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} \
|
|
||||||
OPEN_ROUTER_API_KEY=${OPEN_ROUTER_API_KEY} \
|
|
||||||
GOOGLE_GENERATIVE_AI_API_KEY=${GOOGLE_GENERATIVE_AI_API_KEY} \
|
|
||||||
OLLAMA_API_BASE_URL=${OLLAMA_API_BASE_URL} \
|
|
||||||
XAI_API_KEY=${XAI_API_KEY} \
|
|
||||||
TOGETHER_API_KEY=${TOGETHER_API_KEY} \
|
|
||||||
TOGETHER_API_BASE_URL=${TOGETHER_API_BASE_URL} \
|
|
||||||
AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} \
|
|
||||||
VITE_LOG_LEVEL=${VITE_LOG_LEVEL} \
|
|
||||||
DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX}\
|
|
||||||
RUNNING_IN_DOCKER=true
|
|
||||||
|
|
||||||
RUN mkdir -p ${WORKDIR}/run
|
|
||||||
CMD pnpm run dev --host
|
|
||||||
|
|||||||
Reference in New Issue
Block a user