managarten/services/matrix-todo-bot/Dockerfile
Till-JS a8521d7acd 🐛 fix(matrix-bots): disable E2EE crypto module via pnpm override
Add root-level pnpm override to replace @matrix-org/matrix-sdk-crypto-nodejs
with empty-npm-package. This disables E2EE support but allows matrix bots
to run without native module compilation issues.

The bots don't need E2EE since Matrix Synapse handles encryption at
the server level for our use case.

Also removes the explicit pnpm add commands from Dockerfiles since the
override handles the module replacement.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-01 15:08:28 +01:00

70 lines
2.1 KiB
Docker

# Build stage
FROM node:20-slim AS builder
WORKDIR /app
# Enable pnpm via corepack
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
# Copy workspace configuration
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml ./
# Copy shared packages that this bot depends on
COPY packages/bot-services ./packages/bot-services
COPY packages/matrix-bot-common ./packages/matrix-bot-common
# Copy this bot
COPY services/matrix-todo-bot ./services/matrix-todo-bot
# Install all dependencies
RUN pnpm install --frozen-lockfile --ignore-scripts
# Build shared packages first (in dependency order)
RUN pnpm --filter @manacore/bot-services build
RUN pnpm --filter @manacore/matrix-bot-common build
# Build the bot
RUN pnpm --filter @manacore/matrix-todo-bot build
# Production stage
FROM node:20-slim AS runner
WORKDIR /app
# Enable pnpm via corepack
RUN corepack enable && corepack prepare pnpm@9.15.0 --activate
# Copy workspace configuration
COPY pnpm-workspace.yaml package.json pnpm-lock.yaml ./
# Copy built shared packages
COPY --from=builder /app/packages/bot-services/dist ./packages/bot-services/dist
COPY --from=builder /app/packages/bot-services/package.json ./packages/bot-services/
COPY --from=builder /app/packages/matrix-bot-common/dist ./packages/matrix-bot-common/dist
COPY --from=builder /app/packages/matrix-bot-common/package.json ./packages/matrix-bot-common/
# Copy built bot
COPY --from=builder /app/services/matrix-todo-bot/dist ./services/matrix-todo-bot/dist
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
# Create data directory
RUN mkdir -p /app/data
# Create non-root user
RUN groupadd --system --gid 1001 nodejs && \
useradd --system --uid 1001 -g nodejs nestjs && \
chown -R nestjs:nodejs /app
USER nestjs
WORKDIR /app/services/matrix-todo-bot
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:4014/health || exit 1
EXPOSE 4014
CMD ["node", "dist/main.js"]