diff --git a/backend/Dockerfile b/backend/Dockerfile index 2888632..85c489f 100644 --- a/backend/Dockerfile +++ b/backend/Dockerfile @@ -15,4 +15,6 @@ RUN npm ci --production COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules/.prisma ./node_modules/.prisma EXPOSE 3000 -CMD ["sh", "-c", "npx prisma migrate deploy && node dist/main"] + +# Используем shell для лучшего логирования ошибок +CMD sh -c "echo '=== Starting Backend ===' && npx prisma migrate deploy && echo '=== Migrations completed ===' && node dist/main" diff --git a/backend/src/main.ts b/backend/src/main.ts index 36fce77..322dfc8 100644 --- a/backend/src/main.ts +++ b/backend/src/main.ts @@ -55,15 +55,28 @@ async function bootstrap() { const port = configService.get('PORT') || 3000; const host = configService.get('HOST') || '0.0.0.0'; - await app.listen(port, host); - console.log(`=== Backend Started Successfully ===`); - console.log(`Backend running on http://${host}:${port}`); - console.log(`CORS allowed origins: ${allowedOrigins.join(', ')}`); - console.log(`Environment variables:`); - console.log(` - DATABASE_URL: ${configService.get('DATABASE_URL') ? 'SET' : 'NOT SET'}`); - console.log(` - JWT_SECRET: ${configService.get('JWT_SECRET') ? 'SET' : 'NOT SET'}`); - console.log(` - PORT: ${port}`); - console.log(` - HOST: ${host}`); - console.log(` - CORS_ORIGIN: ${corsOrigin}`); + + try { + await app.listen(port, host); + console.log(`=== Backend Started Successfully ===`); + console.log(`Backend running on http://${host}:${port}`); + console.log(`CORS allowed origins: ${allowedOrigins.join(', ')}`); + console.log(`Environment variables:`); + console.log(` - DATABASE_URL: ${configService.get('DATABASE_URL') ? 'SET' : 'NOT SET'}`); + console.log(` - JWT_SECRET: ${configService.get('JWT_SECRET') ? 'SET' : 'NOT SET'}`); + console.log(` - PORT: ${port}`); + console.log(` - HOST: ${host}`); + console.log(` - CORS_ORIGIN: ${corsOrigin}`); + } catch (error) { + console.error(`=== Backend Failed to Start ===`); + console.error(`Error: ${error.message}`); + console.error(error); + process.exit(1); + } } -bootstrap(); + +bootstrap().catch((error) => { + console.error('=== Fatal Error During Bootstrap ==='); + console.error(error); + process.exit(1); +});