/ Dockerfile
Dockerfile
 1  FROM node:20.11-alpine3.18 as build
 2  
 3  RUN npm install -g pnpm
 4  
 5  # Move files into the image and install
 6  WORKDIR /app
 7  COPY ./service ./
 8  RUN pnpm install --production --frozen-lockfile > /dev/null
 9  
10  # Uses assets from build stage to reduce build size
11  FROM node:20.11-alpine3.18
12  
13  RUN apk add --update dumb-init
14  
15  # Avoid zombie processes, handle signal forwarding
16  ENTRYPOINT ["dumb-init", "--"]
17  
18  WORKDIR /app
19  COPY --from=build /app /app
20  
21  EXPOSE 3000
22  ENV PDS_PORT=3000
23  ENV NODE_ENV=production
24  # potential perf issues w/ io_uring on this version of node
25  ENV UV_USE_IO_URING=0
26  
27  CMD ["node", "--enable-source-maps", "index.js"]
28  
29  LABEL org.opencontainers.image.source=https://github.com/bluesky-social/pds
30  LABEL org.opencontainers.image.description="AT Protocol PDS"
31  LABEL org.opencontainers.image.licenses=MIT