59 lines
1.7 KiB
Markdown
59 lines
1.7 KiB
Markdown
# 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.
|