CodeIssuesDiscussionsWikiPull RequestsProjectsCommitsActionsReleasesContributorsPulse● GatesSecuritySettingsDeploymentsPipelineInsightsAgents✨ Explain✨ Ask AI✨ Workspace✨ Spec✨ Tests▓ Debt Map✨ NL Search🏛 Archaeology
Blame · Line-by-line history
Dockerfile
Each line is annotated with the commit that last touched it. Click any SHA to jump to that commit and see the surrounding change.
| 8ade77b | 1 | FROM oven/bun:1.3 AS base |
| 2 | WORKDIR /app | |
| 3 | ||
| 6499f34 | 4 | # Install git (required for ALL git operations — clone, push, branch/tree |
| 5 | # listing, diffs). Verify it landed: a missing binary here must fail the | |
| 6 | # build loudly rather than ship an image that 500s on every repo page. | |
| 7 | RUN apt-get update \ | |
| 8 | && apt-get install -y --no-install-recommends git ca-certificates \ | |
| 9 | && rm -rf /var/lib/apt/lists/* \ | |
| 10 | && git --version | |
| 8ade77b | 11 | |
| 12 | # Install dependencies | |
| 13 | COPY package.json bun.lock ./ | |
| 14 | RUN bun install --frozen-lockfile --production | |
| 15 | ||
| 16 | # Copy source | |
| 17 | COPY src/ ./src/ | |
| 50c42fe | 18 | COPY drizzle/ ./drizzle/ |
| dcefebe | 19 | COPY scripts/ ./scripts/ |
| 8ade77b | 20 | COPY tsconfig.json drizzle.config.ts ./ |
| 21 | COPY legal/ ./legal/ | |
| 22 | COPY CLAUDE.md LICENSE ./ | |
| 23 | ||
| 24 | # Create repos directory | |
| 25 | RUN mkdir -p /data/repos | |
| 26 | ||
| 27 | ENV GIT_REPOS_PATH=/data/repos | |
| 28 | ENV NODE_ENV=production | |
| 29 | ENV PORT=3000 | |
| 30 | ||
| 31 | EXPOSE 3000 | |
| 32 | ||
| 2c3ba6e | 33 | # Run as non-root user for security |
| 34 | RUN chown -R bun:bun /app /data/repos | |
| 35 | USER bun | |
| 36 | ||
| 8ade77b | 37 | CMD ["bun", "run", "src/index.ts"] |