From a384bed18196d06b2cee997791f6fe4c62dbbb78 Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Sun, 1 Feb 2026 14:41:34 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix(matrix-bots):=20switch=20to?= =?UTF-8?q?=20node:20-slim=20for=20native=20module=20support?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Changed base images from Alpine to Debian slim (glibc vs musl) - Removed --ignore-scripts to allow native module builds - Fixed user creation commands for Debian-based images The matrix-bot-sdk requires @matrix-org/matrix-sdk-crypto-nodejs which needs platform-specific native binaries. Alpine's musl libc causes compatibility issues with these modules. Co-Authored-By: Claude Opus 4.5 --- services/matrix-calendar-bot/Dockerfile | 12 ++++++------ services/matrix-clock-bot/Dockerfile | 12 ++++++------ services/matrix-mana-bot/Dockerfile | 16 ++++++++-------- services/matrix-nutriphi-bot/Dockerfile | 12 ++++++------ services/matrix-ollama-bot/Dockerfile | 12 ++++++------ services/matrix-project-doc-bot/Dockerfile | 12 ++++++------ services/matrix-stats-bot/Dockerfile | 12 ++++++------ services/matrix-todo-bot/Dockerfile | 12 ++++++------ services/matrix-tts-bot/Dockerfile | 12 ++++++------ services/matrix-zitare-bot/Dockerfile | 12 ++++++------ 10 files changed, 62 insertions(+), 62 deletions(-) diff --git a/services/matrix-calendar-bot/Dockerfile b/services/matrix-calendar-bot/Dockerfile index 56bd20c69..e9a0af7e3 100644 --- a/services/matrix-calendar-bot/Dockerfile +++ b/services/matrix-calendar-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-calendar-bot ./services/matrix-calendar-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-calendar-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-calendar-bot/dist ./services/matrix-cal COPY --from=builder /app/services/matrix-calendar-bot/package.json ./services/matrix-calendar-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-clock-bot/Dockerfile b/services/matrix-clock-bot/Dockerfile index d4eb4fb28..c6ffa2680 100644 --- a/services/matrix-clock-bot/Dockerfile +++ b/services/matrix-clock-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-clock-bot ./services/matrix-clock-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-clock-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-clock-bot/dist ./services/matrix-clock- COPY --from=builder /app/services/matrix-clock-bot/package.json ./services/matrix-clock-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-mana-bot/Dockerfile b/services/matrix-mana-bot/Dockerfile index d2ce93b5d..a7a487654 100644 --- a/services/matrix-mana-bot/Dockerfile +++ b/services/matrix-mana-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -16,8 +16,8 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common # Copy this bot COPY services/matrix-mana-bot ./services/matrix-mana-bot -# Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +# Install all dependencies (allow scripts for native modules) +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter matrix-mana-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -47,15 +47,15 @@ COPY --from=builder /app/packages/matrix-bot-common/package.json ./packages/matr COPY --from=builder /app/services/matrix-mana-bot/dist ./services/matrix-mana-bot/dist COPY --from=builder /app/services/matrix-mana-bot/package.json ./services/matrix-mana-bot/ -# Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +# Install production dependencies (allow scripts for native modules) +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-nutriphi-bot/Dockerfile b/services/matrix-nutriphi-bot/Dockerfile index 5bc16553f..a3bf89e12 100644 --- a/services/matrix-nutriphi-bot/Dockerfile +++ b/services/matrix-nutriphi-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-nutriphi-bot ./services/matrix-nutriphi-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-nutriphi-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-nutriphi-bot/dist ./services/matrix-nut COPY --from=builder /app/services/matrix-nutriphi-bot/package.json ./services/matrix-nutriphi-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-ollama-bot/Dockerfile b/services/matrix-ollama-bot/Dockerfile index 4c2a1099e..e0e259a06 100644 --- a/services/matrix-ollama-bot/Dockerfile +++ b/services/matrix-ollama-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-ollama-bot ./services/matrix-ollama-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-ollama-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-ollama-bot/dist ./services/matrix-ollam COPY --from=builder /app/services/matrix-ollama-bot/package.json ./services/matrix-ollama-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-project-doc-bot/Dockerfile b/services/matrix-project-doc-bot/Dockerfile index 6868bb5c3..744d3c1c0 100644 --- a/services/matrix-project-doc-bot/Dockerfile +++ b/services/matrix-project-doc-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-project-doc-bot ./services/matrix-project-doc-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-project-doc-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-project-doc-bot/dist ./services/matrix- COPY --from=builder /app/services/matrix-project-doc-bot/package.json ./services/matrix-project-doc-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-stats-bot/Dockerfile b/services/matrix-stats-bot/Dockerfile index 17fbf85b0..42737bd44 100644 --- a/services/matrix-stats-bot/Dockerfile +++ b/services/matrix-stats-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-stats-bot ./services/matrix-stats-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-stats-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-stats-bot/dist ./services/matrix-stats- COPY --from=builder /app/services/matrix-stats-bot/package.json ./services/matrix-stats-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-todo-bot/Dockerfile b/services/matrix-todo-bot/Dockerfile index 3a9d9aab5..555ac224c 100644 --- a/services/matrix-todo-bot/Dockerfile +++ b/services/matrix-todo-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-todo-bot ./services/matrix-todo-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-todo-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-todo-bot/dist ./services/matrix-todo-bo COPY --from=builder /app/services/matrix-todo-bot/package.json ./services/matrix-todo-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-tts-bot/Dockerfile b/services/matrix-tts-bot/Dockerfile index 10e7388a5..10eadad74 100644 --- a/services/matrix-tts-bot/Dockerfile +++ b/services/matrix-tts-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-tts-bot ./services/matrix-tts-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-tts-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-tts-bot/dist ./services/matrix-tts-bot/ COPY --from=builder /app/services/matrix-tts-bot/package.json ./services/matrix-tts-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs diff --git a/services/matrix-zitare-bot/Dockerfile b/services/matrix-zitare-bot/Dockerfile index 5fc7936a7..0a4408efb 100644 --- a/services/matrix-zitare-bot/Dockerfile +++ b/services/matrix-zitare-bot/Dockerfile @@ -1,5 +1,5 @@ # Build stage -FROM node:20-alpine AS builder +FROM node:20-slim AS builder WORKDIR /app @@ -17,7 +17,7 @@ COPY packages/matrix-bot-common ./packages/matrix-bot-common COPY services/matrix-zitare-bot ./services/matrix-zitare-bot # Install all dependencies -RUN pnpm install --frozen-lockfile --ignore-scripts +RUN pnpm install --frozen-lockfile # Build shared packages first (in dependency order) RUN pnpm --filter @manacore/bot-services build @@ -27,7 +27,7 @@ RUN pnpm --filter @manacore/matrix-bot-common build RUN pnpm --filter @manacore/matrix-zitare-bot build # Production stage -FROM node:20-alpine AS runner +FROM node:20-slim AS runner WORKDIR /app @@ -48,14 +48,14 @@ COPY --from=builder /app/services/matrix-zitare-bot/dist ./services/matrix-zitar COPY --from=builder /app/services/matrix-zitare-bot/package.json ./services/matrix-zitare-bot/ # Install production dependencies only -RUN pnpm install --frozen-lockfile --prod --ignore-scripts +RUN pnpm install --frozen-lockfile --prod # Create data directory RUN mkdir -p /app/data # Create non-root user -RUN addgroup --system --gid 1001 nodejs && \ - adduser --system --uid 1001 nestjs && \ +RUN groupadd --system --gid 1001 nodejs && \ + useradd --system --uid 1001 -g nodejs nestjs && \ chown -R nestjs:nodejs /app USER nestjs