Idle Resource Bloat - Build on Startup Loop Risk
This report documents a production hardening case where the site appeared "bloated" even without active user browsing.
Symptom
- Perceived resource bloat while idle.
- Historical behavior showed repeated Docusaurus build attempts after container restarts.
- Previous incident logs confirmed build-loop patterns can consume CPU/IO even without normal user sessions.
Root Cause Pattern
The service was configured to run:
npm run start
And start in package.json is:
docusaurus build && docusaurus serve --host 0.0.0.0 --port 3000
Impact:
- Every container restart triggers a full production build.
- If content validation fails, container can enter restart/build loops.
- Even with low/no user traffic, rebuild cycles create CPU/IO "bloat" and noisy tunnel errors.
Fix Applied
Updated Compose command to serve existing build directly in production.
File changed:
/opt/docker-data/apps/docusaurus/docker-compose.yml
Change:
command: npm run prod
Where prod is:
docusaurus serve --host 0.0.0.0 --port 3000
Then container was recreated:
sudo docker compose up -d docusaurus
Validation
- Runtime command confirmed:
npm run prod
- Logs showed direct static serving (no rebuild step):
Serving "build" directory at: http://0.0.0.0:3000/
- Resource usage stayed low at idle.
- Public endpoint remained healthy behind Access (
302redirect), no502.
Operational Guidance
- Build intentionally (
npm run build) during deploy windows, not on every container start. - Keep production command on
serveonly. - Add pre-deploy validation to catch frontmatter/MDX errors before restart.
- If updating content frequently, use a deploy script that runs build first, then restarts container only on success.