From 5c82bbbb794e3dbeca6ff665217759263d4239c8 Mon Sep 17 00:00:00 2001 From: Vantz Stockwell Date: Fri, 13 Mar 2026 08:19:46 -0400 Subject: [PATCH] fix: auto-run Prisma migrate + seed on container startup --- Dockerfile | 3 ++- backend/seed.js | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 backend/seed.js diff --git a/Dockerfile b/Dockerfile index ed59032..789483d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -22,6 +22,7 @@ COPY --from=backend /app/backend/dist ./dist COPY --from=backend /app/backend/node_modules ./node_modules COPY --from=backend /app/backend/package.json ./ COPY --from=backend /app/backend/prisma ./prisma +COPY --from=backend /app/backend/seed.js ./seed.js COPY --from=frontend /app/frontend/.output/public ./public EXPOSE 3000 -CMD ["node", "dist/main.js"] +CMD ["sh", "-c", "npx prisma migrate deploy && node seed.js; node dist/main.js"] diff --git a/backend/seed.js b/backend/seed.js new file mode 100644 index 0000000..3593247 --- /dev/null +++ b/backend/seed.js @@ -0,0 +1,25 @@ +const { PrismaClient } = require('@prisma/client'); +const bcrypt = require('bcrypt'); + +const prisma = new PrismaClient(); + +async function main() { + const existing = await prisma.user.findUnique({ where: { email: 'admin@wraith.local' } }); + if (existing) { + console.log('Seed: admin user already exists, skipping'); + return; + } + const hash = await bcrypt.hash('wraith', 10); + await prisma.user.create({ + data: { + email: 'admin@wraith.local', + passwordHash: hash, + displayName: 'Admin', + }, + }); + console.log('Seed complete: admin@wraith.local / wraith'); +} + +main() + .catch(console.error) + .finally(() => prisma.$disconnect());