mirror of
https://github.com/Memo-2023/mana-monorepo.git
synced 2026-05-14 22:01:09 +02:00
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>
70 lines
2.1 KiB
Docker
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"]
|