feat(synapse): update ingress to use traefik ingress class and bump version feat(syncthing-discovery): introduce syncthing discovery service with deployment and ingress feat(syncthing-relay): add syncthing relay server with deployment and ingress configuration fix(taiga): update liveness and readiness probes to use tcpSocket for health checks fix(taiga): change PVC access mode to ReadWriteMany for media and static storage feat(traefik): add icon and ignore rules for traefik service docs(ushahidi): add notes for Redis configuration and Laravel startup probe adjustments feat(ushahidi): implement dedicated Redis deployment for Ushahidi fix(vllm): update deployment strategy and readiness/liveness probes for improved stability fix(writefreely): pin writefreely image version to v0.15.1 for consistency docs(zulip): add notes for TLS-terminating reverse proxy configuration and expected behavior
32 lines
1.1 KiB
Markdown
32 lines
1.1 KiB
Markdown
# PHP (Laravel / Symfony)
|
||
|
||
## Startup delay
|
||
|
||
Laravel's startup sequence (autoload optimization, key generation, migrations, package discovery) commonly takes 2–3 minutes on cluster restart or first boot. The default `initialDelaySeconds: 60` is too short — the liveness probe fires before the app is ready, kills the container, and a restart loop begins.
|
||
|
||
**Symptom**: pod shows `Running` for ~2 minutes, then gets `Killing` due to liveness probe failure, then a new pod starts the same cycle.
|
||
|
||
Use a `tcpSocket` liveness probe (avoids the Host header issue) with an extended initial delay:
|
||
|
||
```yaml
|
||
livenessProbe:
|
||
tcpSocket:
|
||
port: 8080
|
||
initialDelaySeconds: 120
|
||
periodSeconds: 30
|
||
failureThreshold: 6
|
||
readinessProbe:
|
||
httpGet:
|
||
path: /
|
||
port: 8080
|
||
initialDelaySeconds: 60
|
||
periodSeconds: 15
|
||
failureThreshold: 3
|
||
```
|
||
|
||
Symfony has the same behavior. Adjust `initialDelaySeconds` up if migrations are slow.
|
||
|
||
## Resources
|
||
|
||
256–512Mi request is typical for a PHP-FPM or Artisan-served app. Workers (queue:work, horizon) are separate processes — give them their own Deployment and 256–512Mi each.
|