Fix container crash on startup: onnxruntime-node requires glibc (switch Alpine → Debian slim) (#97)
* docker fixes * fix(worker): default COMPUTE_PREWARM_MODELS to false and update docs, env, and compose Set COMPUTE_PREWARM_MODELS to false by default in runtime, docker-compose, and .env.example to avoid pre-downloading ONNX models during worker startup. Update Dockerfile and deployment documentation to reflect this change and clarify configuration for model prewarming. * fix(docker): downgrade pnpm version to 10.33.4 for compatibility --------- Co-authored-by: Richard R <me@richardr.dev>
This commit is contained in:
parent
470898627d
commit
beea1961bf
5 changed files with 10 additions and 8 deletions
10
Dockerfile
10
Dockerfile
|
|
@ -11,10 +11,10 @@ RUN cp "$(command -v nats-server)" /tmp/nats-server
|
|||
|
||||
|
||||
# Stage 2: build the Next.js app
|
||||
FROM node:lts-alpine AS app-builder
|
||||
FROM node:lts-slim AS app-builder
|
||||
|
||||
# Install pnpm globally
|
||||
RUN npm install -g pnpm@11.1.2
|
||||
RUN npm install -g pnpm@10.33.4
|
||||
|
||||
# Create app directory
|
||||
WORKDIR /app
|
||||
|
|
@ -44,12 +44,14 @@ RUN mkdir -p /app/THIRD_PARTY_LICENSES && \
|
|||
|
||||
|
||||
# Stage 3: minimal runtime image
|
||||
FROM node:lts-alpine AS runner
|
||||
FROM node:lts-slim AS runner
|
||||
|
||||
# Add runtime OS dependencies:
|
||||
# - libreoffice-writer: required for DOCX → PDF conversion
|
||||
# ffmpeg is provided by ffmpeg-static from node_modules.
|
||||
RUN apk add --no-cache ca-certificates libreoffice-writer
|
||||
RUN apt-get update && \
|
||||
apt-get install -y --no-install-recommends ca-certificates libreoffice-writer && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install pnpm for runtime process commands.
|
||||
RUN npm install -g pnpm@10.33.4
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ S3_ENDPOINT=http://host.docker.internal:8333
|
|||
S3_FORCE_PATH_STYLE=true
|
||||
|
||||
# Optional tuning
|
||||
# COMPUTE_PREWARM_MODELS=true
|
||||
# COMPUTE_PREWARM_MODELS=false
|
||||
# COMPUTE_JOB_CONCURRENCY=1
|
||||
# COMPUTE_WHISPER_TIMEOUT_MS=30000
|
||||
# COMPUTE_PDF_TIMEOUT_MS=300000
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ services:
|
|||
PORT: ${PORT:-8081}
|
||||
COMPUTE_WORKER_TOKEN: ${COMPUTE_WORKER_TOKEN:-local-compute-token}
|
||||
S3_PREFIX: ${S3_PREFIX:-openreader}
|
||||
COMPUTE_PREWARM_MODELS: ${COMPUTE_PREWARM_MODELS:-true}
|
||||
COMPUTE_PREWARM_MODELS: ${COMPUTE_PREWARM_MODELS:-false}
|
||||
ports:
|
||||
- "8081:8081"
|
||||
develop:
|
||||
|
|
|
|||
|
|
@ -510,7 +510,7 @@ export async function createComputeWorkerApp(options: CreateComputeWorkerAppOpti
|
|||
const pdfTimeoutMs = timeoutConfig.pdfTimeoutMs;
|
||||
const pdfHardCapMs = timeoutConfig.pdfHardCapMs;
|
||||
const pdfAttempts = readIntEnv('COMPUTE_PDF_JOB_ATTEMPTS', 1);
|
||||
const prewarmModels = parseBoolEnv('COMPUTE_PREWARM_MODELS', true);
|
||||
const prewarmModels = parseBoolEnv('COMPUTE_PREWARM_MODELS', false);
|
||||
const jobsStreamMaxBytes = readIntEnv('COMPUTE_JOBS_STREAM_MAX_BYTES', 256 * 1024 * 1024);
|
||||
const eventsStreamMaxBytes = readIntEnv('COMPUTE_EVENTS_STREAM_MAX_BYTES', 128 * 1024 * 1024);
|
||||
const jobStatesMaxBytes = readIntEnv('COMPUTE_JOB_STATES_MAX_BYTES', 64 * 1024 * 1024);
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ Common optional variables:
|
|||
- `COMPUTE_WORKER_HOST=0.0.0.0`
|
||||
- `PORT=8081` for local/manual runs. Platforms like Railway usually inject `PORT`.
|
||||
- `LOG_FORMAT=json` and `COMPUTE_LOG_LEVEL=info`
|
||||
- `COMPUTE_PREWARM_MODELS=true`
|
||||
- `COMPUTE_PREWARM_MODELS=false` by default. Set it to `true` to pre-download ONNX models during worker startup.
|
||||
- `COMPUTE_JOB_CONCURRENCY=1`
|
||||
- `COMPUTE_WHISPER_TIMEOUT_MS=30000`
|
||||
- `COMPUTE_PDF_TIMEOUT_MS=300000`
|
||||
|
|
|
|||
Loading…
Reference in a new issue