d3f93a6f46
- Dockerfile.tools: COPY infrastructure/migrations (migrate.ts laste /build/infrastructure/migrations men mappen saknades -> 'Cant find meta/_journal.json'). - RUNBOOK: nollstall anvandare med DELETE FROM users (respekterar creator_user_id ON DELETE SET NULL), aldrig TRUNCATE CASCADE. Co-Authored-By: Claude <noreply@anthropic.com>
30 lines
1.6 KiB
Docker
30 lines
1.6 KiB
Docker
# Dockerfile.tools — on-demand ops-image för db-migreringar och seed mot prod.
|
|
# Körs INTE som långkörande tjänst (profile: tools i compose). Anropas via:
|
|
# docker compose -f <compose> --profile tools run --rm app-tools tsx packages/database/src/migrate.ts
|
|
# docker compose -f <compose> --profile tools run --rm app-tools tsx packages/database/src/seed/run.ts
|
|
#
|
|
# Seed är idempotent (onConflictDoUpdate/DoNothing) och rör ALDRIG users-tabellen.
|
|
# TRUNCATE i seed är dubbelgrindad (kräver --test OCH databasnamn som slutar på _test),
|
|
# så en körning utan --test mot prod-databasen "cibello" kan aldrig radera data.
|
|
FROM node:22-alpine
|
|
WORKDIR /build
|
|
# tsx globalt (root-devberoende i monorepot) så vi slipper full workspace-install.
|
|
RUN corepack enable && npm install -g tsx@4
|
|
|
|
# Endast det @app/database behöver: root-config + packages/ (inga apps/ krävs).
|
|
COPY package.json pnpm-workspace.yaml pnpm-lock.yaml .npmrc ./
|
|
COPY tsconfig.base.json turbo.json ./
|
|
COPY brand.config.json ./
|
|
COPY packages ./packages
|
|
# migrate.ts läser migreringsfilerna (meta/_journal.json + .sql) härifrån
|
|
COPY infrastructure/migrations ./infrastructure/migrations
|
|
|
|
# Installera @app/database + dess beroende-closure (drizzle-orm, pg, nutrition-engine,
|
|
# analytics, shared-types). Faller tillbaka till icke-frozen om lockfile-koll klagar
|
|
# på att apps/* saknas i den partiella utcheckningen.
|
|
RUN pnpm install --frozen-lockfile --filter @app/database... \
|
|
|| pnpm install --no-frozen-lockfile --filter @app/database...
|
|
|
|
# Ingen tjänst — körs med explicit kommando.
|
|
CMD ["node","-e","console.log('app-tools: ange kommando, t.ex. tsx packages/database/src/seed/run.ts')"]
|