FROM node:22-slim # Install pnpm and build tools required for native modules (sharp, bcrypt). # libvips-dev: with a system libvips present, sharp compiles itself against it instead of # downloading its prebuilt binaries from GitHub, a download that timed out on every in-build # attempt (2026-10-19) and failed the build. RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ python3 \ make \ g++ \ pkg-config \ libvips-dev \ && rm -rf /var/lib/apt/lists/* \ && corepack enable && corepack prepare pnpm@10.26.0 --activate # node-gyp compiles against the headers this image already ships rather than downloading them. ENV npm_config_nodedir=/usr/local WORKDIR /app # Install dependencies first to leverage Docker layer caching. The native modules' build # scripts only run because package.json approves them (pnpm.onlyBuiltDependencies). COPY package.json pnpm-lock.yaml ./ RUN pnpm install --frozen-lockfile --prod # Copy application code. COPY config ./config COPY moleculer.config.js ./ COPY services ./services EXPOSE 3003 CMD ["pnpm", "start"]