17d261fa9439c3b4ceabbabd4924b003021e472d
The seed/migrate/reset Jobs all invoke `pnpm` at runtime via the `pnpm --filter @groombook/db ...` CMD. In the current image, `/usr/local/bin/pnpm` is a symlink to corepack's pnpm.js shim, which delegates to corepack and re-validates the package against https://registry.npmjs.org on first use. The UAT pod network is air-gapped, so corepack fails with: Error: getaddrinfo EAI_AGAIN registry.npmjs.org This causes every seed Job to fail, leaving the Better Auth credential hashes frozen at their last successful seed run — even when the SealedSecret `seed-uat-passwords` is rotated. Replace `corepack install -g pnpm@9.15.4` with `npm install -g pnpm@9.15.4` in the base and runner stages. `npm install -g` writes the real pnpm binary to /usr/local/bin/pnpm, bypassing the corepack shim entirely. The seed, migrate, and reset stages inherit from builder (which inherits from base) so they all get the real pnpm without needing their own install line. The reset stage had a redundant corepack install that can be removed. GRO-1983, supersedes GRO-1909 (incomplete — corepack shim still tried to download pnpm at runtime). Co-Authored-By: Paperclip <noreply@paperclip.ing>
GroomBook API
GroomBook API service — extracted from the groombook/app monorepo.
Overview
This repository contains the GroomBook API service, including:
- REST API endpoints
- Database schema and migrations (via Drizzle ORM)
- Authentication (via Better Auth)
- Background job handlers
Structure
src/ # API service source
packages/db/ # Database schema, migrations, and utilities
packages/types/ # Shared TypeScript types
Setup
pnpm install
cp .env.example .env # Fill in required environment variables
pnpm --filter @groombook/api dev
Docker
docker build -t ghcr.io/groombook/api:latest .
docker run -p 3000:3000 ghcr.io/groombook/api:latest
License
AGPL-3.0-only
Description
Languages
TypeScript
99.3%
JavaScript
0.4%
Dockerfile
0.2%