Repository navigation
Run the web app on Bun (pairux.com, installer.pairux.com) - #128
Merged
Merged
Conversation
Both dev2 sites build apps/web/Dockerfile and now run the Next standalone server under Bun instead of Node. - Image: Node + pnpm only install dependencies (pnpm stays the monorepo's package manager: the Electron and Expo toolchains, the patched @expo/cli and the release scripts depend on it, and none of them run on dev2). Next builds with `bun --bun next build`; the runtime is alpine:3.24 (the Alpine node:24-alpine had, so ffmpeg for call analysis is unchanged) with Bun's musl binary copied in, the pattern icemap.app runs in production. Port 8080, /api/health, the three NEXT_PUBLIC_* build args and the non-root uid 1001 are unchanged; the healthcheck uses Bun's fetch on 127.0.0.1. - apps/web scripts: `bun --bun next dev|build|start`. - CI: a new "web on Bun" workflow installs with pnpm, builds the web app under Bun and boots the standalone server under Bun. ci.yml is left alone (it is managed by the sh1pt Actions Fleet). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
ThreatCrush Security Scan47 finding(s) HIGH/CRITICAL: 4 | MEDIUM: 27 | LOW: 16
Snippets are redacted; ThreatCrush never prints matched credential material. |
Next 16.3's Turbopack evaluates PostCSS in a separate node worker and passes it the parent's flags, so under bun --bun with a real Node on PATH it dies with "node: --bun is not allowed in NODE_OPTIONS". The build stays on Node (pnpm --filter @pairux/web build, as before); the standalone server runs on Bun. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Contributor
Author
|
Local verification. I built the image from
🤖 Generated with Claude Code |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of the fleet Node → Bun migration (recipe from the phonenumbers.bot pilot). Both dev2 sites built from
apps/web/Dockerfile, pairux.com and installer.pairux.com, move their runtime from Node to Bun.Changes
apps/web/Dockerfile):@expo/cli(pnpm.patchedDependencies) and the release scripts depend on it, and none of them run on dev2.bun --bun next build.alpine:3.24with Bun's musl binary copied in. That is the Alpine releasenode:24-alpineuses, so ffmpeg for call analysis stays the same version (oven/bun:*-alpineis 3.22). icemap.app runs this same pattern in production./api/health, the threeNEXT_PUBLIC_*build args the image already declared, and the non-root uid 1001.fetchon 127.0.0.1 instead of busyboxwget.bun --bun next dev|build|start. No workflow built the web app before, so nothing else changes.web on Bunworkflow installs with pnpm, builds the web app under Bun 1.4.0 and boots the standalone server under Bun. I leftci.ymlalone because the sh1pt Actions Fleet manages it.I'll post the local image verification against live pairux.com and installer.pairux.com in a comment before merging.
🤖 Generated with Claude Code