Skip to content

Commit cdeb64f

Browse files
Stijnusclaude
andcommitted
fix: resolve critical Docker configuration issues
This commit fixes multiple critical Docker configuration issues that prevented successful builds: **Dockerfile Issues Fixed:** - Replace incomplete runtime stage with proper production stage using Wrangler - Add missing environment variables for all API providers (DeepSeek, LMStudio, Mistral, Perplexity, OpenAI-like) - Use correct port (5173) instead of 3000 to match Wrangler configuration - Add proper bindings.sh script copying and execution permissions - Configure Wrangler metrics and proper startup command **Docker Compose Issues Fixed:** - Add missing `context` and `dockerfile` fields to app-dev service - Fix target name from `bolt-ai-development` to `development` **Package.json Issues Fixed:** - Update dockerbuild script to use correct target name `development` **Testing:** - ✅ Both `pnpm run dockerbuild` and `pnpm run dockerbuild:prod` now work - ✅ All environment variables properly configured - ✅ Docker images build successfully with proper Wrangler integration Resolves Docker build failures and enables proper containerized deployment. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
1 parent d34852c commit cdeb64f

File tree

3 files changed

+83
-13
lines changed

3 files changed

+83
-13
lines changed

Dockerfile

Lines changed: 79 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,37 +29,90 @@ RUN NODE_OPTIONS=--max-old-space-size=4096 pnpm run build
2929
RUN pnpm prune --prod --ignore-scripts
3030

3131

32-
# ---- runtime stage ----
33-
FROM node:22-bookworm-slim AS runtime
32+
# ---- production stage ----
33+
FROM build AS bolt-ai-production
3434
WORKDIR /app
3535

3636
ENV NODE_ENV=production
37-
ENV PORT=3000
37+
ENV PORT=5173
3838
ENV HOST=0.0.0.0
3939

40-
# Install curl so Coolify’s healthcheck works inside the image
40+
# Production environment variables
41+
ARG GROQ_API_KEY
42+
ARG HuggingFace_API_KEY
43+
ARG OPENAI_API_KEY
44+
ARG ANTHROPIC_API_KEY
45+
ARG OPEN_ROUTER_API_KEY
46+
ARG GOOGLE_GENERATIVE_AI_API_KEY
47+
ARG OLLAMA_API_BASE_URL
48+
ARG XAI_API_KEY
49+
ARG TOGETHER_API_KEY
50+
ARG TOGETHER_API_BASE_URL
51+
ARG AWS_BEDROCK_CONFIG
52+
ARG DEEPSEEK_API_KEY
53+
ARG LMSTUDIO_API_BASE_URL
54+
ARG MISTRAL_API_KEY
55+
ARG PERPLEXITY_API_KEY
56+
ARG OPENAI_LIKE_API_KEY
57+
ARG OPENAI_LIKE_API_BASE_URL
58+
ARG OPENAI_LIKE_API_MODELS
59+
ARG VITE_LOG_LEVEL=debug
60+
ARG DEFAULT_NUM_CTX
61+
62+
ENV WRANGLER_SEND_METRICS=false \
63+
GROQ_API_KEY=${GROQ_API_KEY} \
64+
HuggingFace_API_KEY=${HuggingFace_API_KEY} \
65+
OPENAI_API_KEY=${OPENAI_API_KEY} \
66+
ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} \
67+
OPEN_ROUTER_API_KEY=${OPEN_ROUTER_API_KEY} \
68+
GOOGLE_GENERATIVE_AI_API_KEY=${GOOGLE_GENERATIVE_AI_API_KEY} \
69+
OLLAMA_API_BASE_URL=${OLLAMA_API_BASE_URL} \
70+
XAI_API_KEY=${XAI_API_KEY} \
71+
TOGETHER_API_KEY=${TOGETHER_API_KEY} \
72+
TOGETHER_API_BASE_URL=${TOGETHER_API_BASE_URL} \
73+
AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} \
74+
DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} \
75+
LMSTUDIO_API_BASE_URL=${LMSTUDIO_API_BASE_URL} \
76+
MISTRAL_API_KEY=${MISTRAL_API_KEY} \
77+
PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY} \
78+
OPENAI_LIKE_API_KEY=${OPENAI_LIKE_API_KEY} \
79+
OPENAI_LIKE_API_BASE_URL=${OPENAI_LIKE_API_BASE_URL} \
80+
OPENAI_LIKE_API_MODELS=${OPENAI_LIKE_API_MODELS} \
81+
VITE_LOG_LEVEL=${VITE_LOG_LEVEL} \
82+
DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX} \
83+
RUNNING_IN_DOCKER=true
84+
85+
# Install curl for healthchecks and copy bindings script
4186
RUN apt-get update && apt-get install -y --no-install-recommends curl \
4287
&& rm -rf /var/lib/apt/lists/*
4388

44-
# Copy only what we need to run
89+
# Copy built files and scripts
4590
COPY --from=build /app/build /app/build
4691
COPY --from=build /app/node_modules /app/node_modules
4792
COPY --from=build /app/package.json /app/package.json
93+
COPY --from=build /app/bindings.sh /app/bindings.sh
94+
95+
# Pre-configure wrangler to disable metrics
96+
RUN mkdir -p /root/.config/.wrangler && \
97+
echo '{"enabled":false}' > /root/.config/.wrangler/metrics.json
98+
99+
# Make bindings script executable
100+
RUN chmod +x /app/bindings.sh
48101

49-
EXPOSE 3000
102+
EXPOSE 5173
50103

51-
# Healthcheck for Coolify
104+
# Healthcheck for deployment platforms
52105
HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=5 \
53-
CMD curl -fsS http://localhost:3000/ || exit 1
106+
CMD curl -fsS http://localhost:5173/ || exit 1
54107

55-
# Start the Remix server
56-
CMD ["node", "build/server/index.js"]
108+
# Start using dockerstart script with Wrangler
109+
CMD ["pnpm", "run", "dockerstart"]
57110

58111

59112
# ---- development stage ----
60113
FROM build AS development
61114

62-
# Define environment variables for development
115+
# Define the same environment variables for development
63116
ARG GROQ_API_KEY
64117
ARG HuggingFace_API_KEY
65118
ARG OPENAI_API_KEY
@@ -70,6 +123,14 @@ ARG OLLAMA_API_BASE_URL
70123
ARG XAI_API_KEY
71124
ARG TOGETHER_API_KEY
72125
ARG TOGETHER_API_BASE_URL
126+
ARG AWS_BEDROCK_CONFIG
127+
ARG DEEPSEEK_API_KEY
128+
ARG LMSTUDIO_API_BASE_URL
129+
ARG MISTRAL_API_KEY
130+
ARG PERPLEXITY_API_KEY
131+
ARG OPENAI_LIKE_API_KEY
132+
ARG OPENAI_LIKE_API_BASE_URL
133+
ARG OPENAI_LIKE_API_MODELS
73134
ARG VITE_LOG_LEVEL=debug
74135
ARG DEFAULT_NUM_CTX
75136

@@ -84,6 +145,13 @@ ENV GROQ_API_KEY=${GROQ_API_KEY} \
84145
TOGETHER_API_KEY=${TOGETHER_API_KEY} \
85146
TOGETHER_API_BASE_URL=${TOGETHER_API_BASE_URL} \
86147
AWS_BEDROCK_CONFIG=${AWS_BEDROCK_CONFIG} \
148+
DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} \
149+
LMSTUDIO_API_BASE_URL=${LMSTUDIO_API_BASE_URL} \
150+
MISTRAL_API_KEY=${MISTRAL_API_KEY} \
151+
PERPLEXITY_API_KEY=${PERPLEXITY_API_KEY} \
152+
OPENAI_LIKE_API_KEY=${OPENAI_LIKE_API_KEY} \
153+
OPENAI_LIKE_API_BASE_URL=${OPENAI_LIKE_API_BASE_URL} \
154+
OPENAI_LIKE_API_MODELS=${OPENAI_LIKE_API_MODELS} \
87155
VITE_LOG_LEVEL=${VITE_LOG_LEVEL} \
88156
DEFAULT_NUM_CTX=${DEFAULT_NUM_CTX} \
89157
RUNNING_IN_DOCKER=true

docker-compose.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ services:
3838
app-dev:
3939
image: bolt-ai:development
4040
build:
41-
target: bolt-ai-development
41+
context: .
42+
dockerfile: Dockerfile
43+
target: development
4244
env_file:
4345
- '.env'
4446
- '.env.local'

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
"dockerstart": "bindings=$(./bindings.sh) && wrangler pages dev ./build/client $bindings --ip 0.0.0.0 --port 5173 --no-show-interactive-dev-session",
2525
"dockerrun": "docker run -it -d --name bolt-ai-live -p 5173:5173 --env-file .env.local bolt-ai",
2626
"dockerbuild:prod": "docker build -t bolt-ai:production -t bolt-ai:latest --target bolt-ai-production .",
27-
"dockerbuild": "docker build -t bolt-ai:development -t bolt-ai:latest --target bolt-ai-development .",
27+
"dockerbuild": "docker build -t bolt-ai:development -t bolt-ai:latest --target development .",
2828
"typecheck": "tsc",
2929
"typegen": "wrangler types",
3030
"preview": "pnpm run build && pnpm run start",

0 commit comments

Comments
 (0)