diff --git a/Dockerfile b/Dockerfile index 3f9fc9c..0fcaf71 100644 --- a/Dockerfile +++ b/Dockerfile @@ -61,13 +61,14 @@ RUN chown nextjs:nodejs .next COPY --from=builder --chown=nextjs:nodejs /app/.next/standalone ./ COPY --from=builder --chown=nextjs:nodejs /app/.next/static ./.next/static -# Copy Prisma (client and schema for migrations) +# Copy Prisma (client, schema, and config for migrations) COPY --from=deps /app/node_modules/.prisma ./node_modules/.prisma COPY --from=deps /app/node_modules/@prisma ./node_modules/@prisma COPY prisma ./prisma/ +COPY prisma.config.mjs ./ -# Install Prisma CLI globally for migrations -RUN npm install -g prisma@7 +# Install Prisma CLI and dotenv globally for migrations +RUN npm install -g prisma@7 dotenv USER nextjs diff --git a/package.json b/package.json index 1701d63..64e108b 100644 --- a/package.json +++ b/package.json @@ -63,6 +63,7 @@ "zustand": "^5.0.3" }, "devDependencies": { + "dotenv": "^16.5.0", "@eslint/eslintrc": "^3.3.3", "@testing-library/react": "^16.3.1", "@types/bcryptjs": "^2.4.6", diff --git a/prisma.config.mjs b/prisma.config.mjs new file mode 100644 index 0000000..8c7dd7f --- /dev/null +++ b/prisma.config.mjs @@ -0,0 +1,23 @@ +// Load .env file for local development (silently skip if not available) +try { + const dotenv = await import('dotenv') + dotenv.config() +} catch { + // dotenv not available (e.g., in Docker) - env vars passed directly +} + +const databaseUrl = process.env.DATABASE_URL + +if (!databaseUrl) { + throw new Error('DATABASE_URL environment variable is required') +} + +export default { + schema: 'prisma/schema.prisma', + migrations: { + path: 'prisma/migrations', + }, + datasource: { + url: databaseUrl, + }, +} diff --git a/prisma/prisma.config.ts b/prisma/prisma.config.ts deleted file mode 100644 index 952ca5c..0000000 --- a/prisma/prisma.config.ts +++ /dev/null @@ -1,12 +0,0 @@ -import 'dotenv/config' -import { defineConfig, env } from 'prisma/config' - -export default defineConfig({ - schema: 'prisma/schema.prisma', - migrations: { - path: 'prisma/migrations', - }, - datasource: { - url: env('DATABASE_URL'), - }, -})