feat(deploy): add production runtime foundation
This commit is contained in:
58
docs/deployment-production.md
Normal file
58
docs/deployment-production.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Production Deployment Runtime Foundation
|
||||
|
||||
This project can be deployed in a dedicated Proxmox container using Docker Compose. The files added here establish a minimal production runtime baseline without changing application business logic or Supabase security boundaries.
|
||||
|
||||
## Dockerfile purpose
|
||||
|
||||
The `Dockerfile` uses a multi-stage build on Node 20:
|
||||
|
||||
- installs dependencies
|
||||
- runs `next build`
|
||||
- prepares a lean runtime image with production dependencies
|
||||
- runs the app with `next start` on port `3000`
|
||||
|
||||
This keeps the runtime image small and focused on serving the built Next.js app.
|
||||
|
||||
## docker-compose.prod.yml purpose
|
||||
|
||||
`docker-compose.prod.yml` defines one service:
|
||||
|
||||
- service name: `web`
|
||||
- container name: `plesk-agency-portal`
|
||||
- restart policy: `unless-stopped`
|
||||
- environment from `.env`
|
||||
- port mapping `3000:3000`
|
||||
- health check against `/api/health`
|
||||
|
||||
## External Supabase requirement
|
||||
|
||||
Supabase remains external to this application container. The app container must only connect to Supabase via environment variables. No local Supabase container is included in this production compose file.
|
||||
|
||||
## Health endpoint usage
|
||||
|
||||
`GET /api/health` provides a fast, dependency-light runtime check for container orchestration and uptime checks.
|
||||
|
||||
Example:
|
||||
|
||||
```bash
|
||||
curl -s http://localhost:3000/api/health
|
||||
```
|
||||
|
||||
Expected response shape:
|
||||
|
||||
- `ok: true`
|
||||
- `service: "plesk-agency-portal"`
|
||||
- `timestamp`
|
||||
- `environment`
|
||||
|
||||
## Production environment expectations
|
||||
|
||||
Before deploying, set production-safe values in `.env` (using `.env.example` as the template), including:
|
||||
|
||||
- app URL and `NODE_ENV`
|
||||
- Supabase public and server credentials
|
||||
- Plesk credential encryption key
|
||||
- Stripe secrets
|
||||
- cron/job shared secrets
|
||||
|
||||
Keep secrets out of source control.
|
||||
Reference in New Issue
Block a user