mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-31 04:12:10 +03:00
- fix(docker): copy pino-abstract-transport and pino-pretty explicitly in runner-base stage — Next.js standalone trace omits them, causing 'Cannot find module pino-abstract-transport' crash on startup (#449) - fix(responses): remove initTranslators() call from /v1/responses route — bootstrapping translator registry from a Next.js Route Handler worker caused 'the worker has exited' uncaughtException on Codex CLI requests. Translators are already bootstrapped server-side via open-sse (#450) - chore: include package-lock.json in commit (was being left behind on version bumps, causing npm ci to install inconsistent deps in Docker)
61 lines
2.5 KiB
Docker
61 lines
2.5 KiB
Docker
FROM node:22-bookworm-slim AS builder
|
|
WORKDIR /app
|
|
|
|
COPY package*.json ./
|
|
COPY scripts/postinstall.mjs ./scripts/postinstall.mjs
|
|
COPY scripts/native-binary-compat.mjs ./scripts/native-binary-compat.mjs
|
|
RUN if [ -f package-lock.json ]; then npm ci --no-audit --no-fund; else npm install --no-audit --no-fund; fi
|
|
|
|
COPY . ./
|
|
RUN mkdir -p /app/data && npm run build
|
|
|
|
FROM node:22-bookworm-slim AS runner-base
|
|
WORKDIR /app
|
|
|
|
LABEL org.opencontainers.image.title="omniroute" \
|
|
org.opencontainers.image.description="Unified AI proxy — route any LLM through one endpoint" \
|
|
org.opencontainers.image.url="https://omniroute.online" \
|
|
org.opencontainers.image.source="https://github.com/diegosouzapw/OmniRoute" \
|
|
org.opencontainers.image.licenses="MIT"
|
|
|
|
ENV NODE_ENV=production
|
|
ENV PORT=20128
|
|
ENV HOSTNAME=0.0.0.0
|
|
ENV NODE_OPTIONS="--max-old-space-size=256"
|
|
|
|
# Data directory inside Docker — must match the volume mount in docker-compose.yml
|
|
ENV DATA_DIR=/app/data
|
|
RUN mkdir -p /app/data
|
|
|
|
COPY --from=builder /app/public ./public
|
|
COPY --from=builder /app/.next/static ./.next/static
|
|
COPY --from=builder /app/.next/standalone ./
|
|
# Explicitly copy @swc/helpers — not always traced by standalone output but needed at runtime
|
|
COPY --from=builder /app/node_modules/@swc/helpers ./node_modules/@swc/helpers
|
|
# Explicitly copy pino transport dependencies — pino spawns a worker that requires
|
|
# pino-abstract-transport at runtime; Next.js standalone trace does not capture it (#449)
|
|
COPY --from=builder /app/node_modules/pino-abstract-transport ./node_modules/pino-abstract-transport
|
|
COPY --from=builder /app/node_modules/pino-pretty ./node_modules/pino-pretty
|
|
COPY --from=builder /app/scripts/run-standalone.mjs ./run-standalone.mjs
|
|
COPY --from=builder /app/scripts/runtime-env.mjs ./runtime-env.mjs
|
|
COPY --from=builder /app/scripts/bootstrap-env.mjs ./bootstrap-env.mjs
|
|
COPY --from=builder /app/scripts/healthcheck.mjs ./healthcheck.mjs
|
|
|
|
EXPOSE 20128
|
|
|
|
HEALTHCHECK --interval=30s --timeout=5s --start-period=15s --retries=3 \
|
|
CMD ["node", "healthcheck.mjs"]
|
|
|
|
CMD ["node", "run-standalone.mjs"]
|
|
|
|
FROM runner-base AS runner-cli
|
|
|
|
# Install system dependencies required by openclaw (git+ssh references).
|
|
RUN apt-get update \
|
|
&& apt-get install -y --no-install-recommends git ca-certificates \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& git config --system url."https://github.com/".insteadOf "ssh://git@github.com/"
|
|
|
|
# Install CLI tools globally. Separate layer from apt for better cache reuse.
|
|
RUN npm install -g --no-audit --no-fund @openai/codex @anthropic-ai/claude-code droid openclaw@latest
|