Checks Docker health check configuration for PHP services. Verifies PHP-FPM, Nginx, and dependent service health checks.
Install
npx skillscat add dykyi-roman/awesome-claude-code/check-docker-healthcheck Install via the SkillsCat registry.
About this skill
We need to produce a 2-3 sentence plain-text summary, objective, factual, no marketing, no superlatives, no calls to action, natural prose, no bullet points, no headings, no markdown formatting. At most 60 words. Must be only the summary text, no quotes. So produce something like: "The skill analyzes Docker health check configurations for PHP services, ensuring proper health check definitions for PHP-FPM, Nginx, and related services.
SKILL.md
Docker Health Check Configuration Checker
Analyze Docker health check configuration for PHP stacks and dependent services.
Health Check Patterns by Service
1. PHP-FPM
# Using php-fpm-healthcheck script (recommended)
HEALTHCHECK --interval=10s --timeout=3s --start-period=10s --retries=3 \
CMD php-fpm-healthcheck || exit 1
# Using cgi-fcgi (requires libfcgi)
HEALTHCHECK --interval=10s --timeout=3s --start-period=10s --retries=3 \
CMD cgi-fcgi -bind -connect 127.0.0.1:9000 /ping || exit 1; Required PHP-FPM pool config
ping.path = /ping
ping.response = pong
pm.status_path = /status2. Nginx
HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost/health || exit 1
# Or wget for minimal images
HEALTHCHECK --interval=10s --timeout=3s --start-period=5s --retries=3 \
CMD wget --spider --quiet http://localhost/health || exit 13. MySQL
services:
mysql:
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s4. PostgreSQL
services:
postgres:
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 30s5. Redis
services:
redis:
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 10s
timeout: 3s
retries: 3
start_period: 5s6. RabbitMQ
services:
rabbitmq:
healthcheck:
test: ["CMD-SHELL", "rabbitmq-diagnostics check_running && rabbitmq-diagnostics check_local_alarms"]
interval: 15s
timeout: 10s
retries: 5
start_period: 30sRecommended Parameters
| Service | interval | timeout | start_period | retries |
|---|---|---|---|---|
| PHP-FPM | 10s | 3s | 10s | 3 |
| Nginx | 10s | 3s | 5s | 3 |
| MySQL | 10s | 5s | 30s | 5 |
| PostgreSQL | 10s | 5s | 30s | 5 |
| Redis | 10s | 3s | 5s | 3 |
| RabbitMQ | 15s | 10s | 30s | 5 |
Improper Health Check Detection
# BAD: Too frequent (overhead)
HEALTHCHECK --interval=1s --timeout=1s --retries=1 CMD curl localhost
# BAD: No start_period (fails during init)
HEALTHCHECK --interval=5s --timeout=3s --retries=3 CMD pg_isready
# BAD: Checking external dependency
HEALTHCHECK CMD curl -f https://api.external.com/health
# BAD: Too slow detection (interval*retries > 5min)
HEALTHCHECK --interval=60s --timeout=30s --retries=10 CMD curl localhostGrep Patterns
Grep: "HEALTHCHECK" --glob "**/Dockerfile*"
Grep: "healthcheck:" --glob "**/docker-compose*.yml"
Grep: "depends_on:" --glob "**/docker-compose*.yml"
Grep: "ping\\.path|pm\\.status_path" --glob "**/*.conf"Severity Classification
| Issue | Severity | Impact |
|---|---|---|
| No health check for any service | Critical | No failure detection |
| PHP-FPM without health check | Critical | Dead workers undetected |
| Database without health check | Major | App starts before DB ready |
| No start_period for databases | Major | False unhealthy during init |
| Checking external dependency | Major | External outage cascades |
| depends_on without condition | Major | Startup race condition |
| Interval too low (< 5s) | Minor | Unnecessary overhead |
| Interval too high (> 60s) | Minor | Slow failure detection |
| timeout >= interval | Minor | Overlapping checks |
Output Format
### Health Check Issue: [Description]
**Severity:** Critical/Major/Minor
**Service:** [service name]
**File:** `docker-compose.yml:line` or `Dockerfile:line`
**Issue:**
[Description of missing or misconfigured health check]
**Recommended:**
```yaml
healthcheck:
test: ["CMD-SHELL", "..."]
interval: 10s
timeout: 3s
start_period: 10s
retries: 3Parameters:
| Param | Current | Recommended | Reason |
|---|---|---|---|
| interval | N/A | 10s | Standard frequency |
| timeout | N/A | 3s | Fast failure detection |
| start_period | N/A | 10s | Allow initialization |
| retries | N/A | 3 | Prevent flapping |