alf: the atproto Latency Fabric
alf.fly.dev/
1# Stage 1: Build
2FROM node:24-alpine AS builder
3
4WORKDIR /app
5
6# Install build dependencies for native modules (better-sqlite3)
7RUN apk add --no-cache python3 make g++
8
9COPY package*.json ./
10COPY packages ./packages
11RUN npm ci
12
13COPY tsconfig.json ./
14COPY src ./src
15RUN npm run build
16
17# Stage 2: Production
18FROM node:24-alpine AS production
19
20WORKDIR /app
21
22ENV NODE_ENV=production
23
24# Install runtime dependencies for native modules
25RUN apk add --no-cache python3 make g++
26
27COPY package*.json ./
28COPY packages ./packages
29RUN npm ci --omit=dev
30
31COPY --from=builder /app/dist ./dist
32COPY lexicons ./lexicons
33
34EXPOSE 3005
35
36CMD ["node", "dist/index.js"]