Skip to content

Commit c69fae8

Browse files
authored
Merge pull request #1986 from youssefsala7/patch-1
fix: update Dockerfile
2 parents 2bc0325 + f9f5574 commit c69fae8

File tree

1 file changed

+40
-79
lines changed

1 file changed

+40
-79
lines changed

Dockerfile

Lines changed: 40 additions & 79 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,56 @@
1-
ARG BASE=node:20.18.0
2-
FROM ${BASE} AS base
3-
1+
# ---- build stage ----
2+
FROM node:22-bookworm-slim AS build
43
WORKDIR /app
54

6-
# Install dependencies (this step is cached as long as the dependencies don't change)
7-
COPY package.json pnpm-lock.yaml ./
5+
# CI-friendly env
6+
ENV HUSKY=0
7+
ENV CI=true
88

9-
#RUN npm install -g corepack@latest
9+
# Use pnpm
10+
RUN corepack enable && corepack prepare [email protected] --activate
1011

11-
#RUN corepack enable pnpm && pnpm install
12-
RUN npm install -g pnpm && pnpm install
12+
# Accept (optional) build-time public URL for Remix/Vite (Coolify can pass it)
13+
ARG VITE_PUBLIC_APP_URL
14+
ENV VITE_PUBLIC_APP_URL=${VITE_PUBLIC_APP_URL}
1315

14-
# Copy the rest of your app's source code
15-
COPY . .
16+
# Install deps efficiently
17+
COPY package.json pnpm-lock.yaml* ./
18+
RUN pnpm fetch
1619

17-
# Expose the port the app runs on
18-
EXPOSE 5173
20+
# Copy source and build
21+
COPY . .
22+
# install with dev deps (needed to build)
23+
RUN pnpm install --offline --frozen-lockfile
1924

20-
# Production image
21-
FROM base AS bolt-ai-production
25+
# Build the Remix app (SSR + client)
26+
RUN NODE_OPTIONS=--max-old-space-size=4096 pnpm run build
2227

23-
# Define environment variables with default values or let them be overridden
24-
ARG GROQ_API_KEY
25-
ARG HuggingFace_API_KEY
26-
ARG OPENAI_API_KEY
27-
ARG ANTHROPIC_API_KEY
28-
ARG OPEN_ROUTER_API_KEY
29-
ARG GOOGLE_GENERATIVE_AI_API_KEY
30-
ARG OLLAMA_API_BASE_URL
31-
ARG XAI_API_KEY
32-
ARG TOGETHER_API_KEY
33-
ARG TOGETHER_API_BASE_URL
34-
ARG AWS_BEDROCK_CONFIG
35-
ARG VITE_LOG_LEVEL=debug
36-
ARG DEFAULT_NUM_CTX
28+
# Keep only production deps for runtime
29+
RUN pnpm prune --prod --ignore-scripts
3730

38-
ENV WRANGLER_SEND_METRICS=false \
39-
GROQ_API_KEY=${GROQ_API_KEY} \
40-
HuggingFace_KEY=${HuggingFace_API_KEY} \
41-
OPENAI_API_KEY=${OPENAI_API_KEY} \
42-
ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} \
43-
OPEN_ROUTER_API_KEY=${OPEN_ROUTER_API_KEY} \
44-
GOOGLE_GENERATIVE_AI_API_KEY=${GOOGLE_GENERATIVE_AI_API_KEY} \
45-
OLLAMA_API_BASE_URL=${OLLAMA_API_BASE_URL} \
46-
XAI_API_KEY=${XAI_API_KEY} \
47-
TOGETHER_API_KEY=${TOGETHER_API_KEY} \
48-
TOGETHER_API_BASE_URL=${TOGETHER_API_BASE_URL} \
49-
AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} \
50-
VITE_LOG_LEVEL=${VITE_LOG_LEVEL} \
51-
DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX}\
52-
RUNNING_IN_DOCKER=true
5331

54-
# Pre-configure wrangler to disable metrics
55-
RUN mkdir -p /root/.config/.wrangler && \
56-
echo '{"enabled":false}' > /root/.config/.wrangler/metrics.json
32+
# ---- runtime stage ----
33+
FROM node:22-bookworm-slim AS runtime
34+
WORKDIR /app
5735

58-
RUN pnpm run build
36+
ENV NODE_ENV=production
37+
ENV PORT=3000
38+
ENV HOST=0.0.0.0
5939

60-
CMD [ "pnpm", "run", "dockerstart"]
40+
# Install curl so Coolify’s healthcheck works inside the image
41+
RUN apt-get update && apt-get install -y --no-install-recommends curl \
42+
&& rm -rf /var/lib/apt/lists/*
6143

62-
# Development image
63-
FROM base AS bolt-ai-development
44+
# Copy only what we need to run
45+
COPY --from=build /app/build /app/build
46+
COPY --from=build /app/node_modules /app/node_modules
47+
COPY --from=build /app/package.json /app/package.json
6448

65-
# Define the same environment variables for development
66-
ARG GROQ_API_KEY
67-
ARG HuggingFace
68-
ARG OPENAI_API_KEY
69-
ARG ANTHROPIC_API_KEY
70-
ARG OPEN_ROUTER_API_KEY
71-
ARG GOOGLE_GENERATIVE_AI_API_KEY
72-
ARG OLLAMA_API_BASE_URL
73-
ARG XAI_API_KEY
74-
ARG TOGETHER_API_KEY
75-
ARG TOGETHER_API_BASE_URL
76-
ARG VITE_LOG_LEVEL=debug
77-
ARG DEFAULT_NUM_CTX
49+
EXPOSE 3000
7850

79-
ENV GROQ_API_KEY=${GROQ_API_KEY} \
80-
HuggingFace_API_KEY=${HuggingFace_API_KEY} \
81-
OPENAI_API_KEY=${OPENAI_API_KEY} \
82-
ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} \
83-
OPEN_ROUTER_API_KEY=${OPEN_ROUTER_API_KEY} \
84-
GOOGLE_GENERATIVE_AI_API_KEY=${GOOGLE_GENERATIVE_AI_API_KEY} \
85-
OLLAMA_API_BASE_URL=${OLLAMA_API_BASE_URL} \
86-
XAI_API_KEY=${XAI_API_KEY} \
87-
TOGETHER_API_KEY=${TOGETHER_API_KEY} \
88-
TOGETHER_API_BASE_URL=${TOGETHER_API_BASE_URL} \
89-
AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} \
90-
VITE_LOG_LEVEL=${VITE_LOG_LEVEL} \
91-
DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX}\
92-
RUNNING_IN_DOCKER=true
51+
# Healthcheck for Coolify
52+
HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=5 \
53+
CMD curl -fsS http://localhost:3000/ || exit 1
9354

94-
RUN mkdir -p ${WORKDIR}/run
95-
CMD pnpm run dev --host
55+
# Start the Remix server
56+
CMD ["node", "build/server/index.js"]

0 commit comments

Comments
 (0)