Deployment
Deployment Options
npm i -g vercelvercelnpm i -g netlify-clinetlify deploy --prodFROM node:20-alpineWORKDIR /appCOPY package*.json ./RUN npm ci --only=productionCOPY . .EXPOSE 3000CMD ["npm", "start"]Build for Production
# Build optimized bundlenpm run build
# Preview production build locallynpm run previewEnvironment Setup
Production Variables
NODE_ENV=productionAPI_URL=https://api.myapp.comDATABASE_URL=postgres://user:pass@host:5432/dbPre-deployment Checklist
- Run tests:
npm test - Build succeeds:
npm run build - Environment variables configured
- Database migrations applied
- SSL certificate configured
Health Checks
app.get('/health', (req, res) => { res.json({ status: 'healthy', uptime: process.uptime(), timestamp: Date.now(), });});Recommended Always include a health check endpoint for monitoring.
Monitoring
// Log important eventslogger.info('Server started', { port: 3000 });logger.error('Database connection failed', { error });