build(css): run Tailwind build in Docker so host bun is not required #36

Merged
David merged 2 commits from feat/dockerize-build-css-vapp-27 into main 2026-06-14 00:08:42 +02:00
Owner

Add a pinned bun_image (oven/bun:1.3.14-alpine) and rewrite build-css to run bun install and the tailwindcss build inside that image via docker run, as the host user, so the only host requirements are Docker and git. Generated assets/tailwind-built.css and node_modules/ are host-owned and removable without sudo. HOME and the bun cache point at the container's ephemeral /tmp so bun stays writable under the non-root host user without polluting the working tree.

The bun 1.1.x series suggested in the issue mis-handles tailwindcss's output-dir creation (EEXIST on mkdir assets), so this pins the current working 1.3.x patch instead; the exact-pin convention from dev_image is preserved.

Update pre-commit to depend on the dockerized build-css and drop its two host bun lines; its cargo docker run steps are unchanged. check, dev-web, dev-desktop, build-web, and build-desktop already depend on build-css, so they inherit the Docker path. .forgejo/workflows/check.yml is left on runner-provided bun. README updated to note bun runs in Docker locally.

#VAPP-27

Add a pinned `bun_image` (oven/bun:1.3.14-alpine) and rewrite `build-css` to run `bun install` and the tailwindcss build inside that image via `docker run`, as the host user, so the only host requirements are Docker and git. Generated `assets/tailwind-built.css` and `node_modules/` are host-owned and removable without sudo. HOME and the bun cache point at the container's ephemeral /tmp so bun stays writable under the non-root host user without polluting the working tree. The bun 1.1.x series suggested in the issue mis-handles tailwindcss's output-dir creation (EEXIST on `mkdir assets`), so this pins the current working 1.3.x patch instead; the exact-pin convention from `dev_image` is preserved. Update `pre-commit` to depend on the dockerized `build-css` and drop its two host bun lines; its cargo `docker run` steps are unchanged. `check`, `dev-web`, `dev-desktop`, `build-web`, and `build-desktop` already depend on `build-css`, so they inherit the Docker path. `.forgejo/workflows/check.yml` is left on runner-provided bun. README updated to note bun runs in Docker locally. #VAPP-27
build(css): run Tailwind build in Docker so host bun is not required
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 3m10s
14b3ab87a7
Add a pinned `bun_image` (oven/bun:1.3.14-alpine) and rewrite `build-css` to run `bun install` and the tailwindcss build inside that image via `docker run`, as the host user, so the only host requirements are Docker and git. Generated `assets/tailwind-built.css` and `node_modules/` are host-owned and removable without sudo. HOME and the bun cache point at the container's ephemeral /tmp so bun stays writable under the non-root host user without polluting the working tree.

The bun 1.1.x series suggested in the issue mis-handles tailwindcss's output-dir creation (EEXIST on `mkdir assets`), so this pins the current working 1.3.x patch instead; the exact-pin convention from `dev_image` is preserved.

Update `pre-commit` to depend on the dockerized `build-css` and drop its two host bun lines; its cargo `docker run` steps are unchanged. `check`, `dev-web`, `dev-desktop`, `build-web`, and `build-desktop` already depend on `build-css`, so they inherit the Docker path. `.forgejo/workflows/check.yml` is left on runner-provided bun. README updated to note bun runs in Docker locally.

#VAPP-27
Merge origin/main into feat/dockerize-build-css-vapp-27
All checks were successful
Check / fmt + clippy + build + tests (pull_request) Successful in 1m6s
Create release / Create release from merged PR (pull_request) Has been skipped
31e3d5424c
#VAPP-27
David merged commit 6687c2f335 into main 2026-06-14 00:08:42 +02:00
David deleted branch feat/dockerize-build-css-vapp-27 2026-06-14 00:08:42 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/vervain-apps!36
No description provided.