FROM node:20-slim # Install pnpm RUN npm install -g pnpm WORKDIR /app # Copy package files first for better caching COPY package.json pnpm-lock.yaml* pnpm-workspace.yaml* ./ COPY packages/core/package.json ./packages/core/ COPY packages/storage-sqlite/package.json ./packages/storage-sqlite/ COPY packages/blobs-fs/package.json ./packages/blobs-fs/ COPY packages/readonly/package.json ./packages/readonly/ # Install dependencies RUN pnpm install --frozen-lockfile || pnpm install # Copy source code COPY packages/core/ ./packages/core/ COPY packages/storage-sqlite/ ./packages/storage-sqlite/ COPY packages/blobs-fs/ ./packages/blobs-fs/ COPY packages/readonly/ ./packages/readonly/ # Create data directories RUN mkdir -p /data/repos /data/blobs /data/db # Set environment variables ENV PDS_PORT=3000 ENV PDS_HOSTNAME=localhost # Expose port EXPOSE 3000 # Run the read-only PDS ENTRYPOINT ["node", "packages/readonly/src/cli.js"] CMD ["--data-dir", "/data/db", "--port", "3000"]