# Docker Compose Healthcheck Injector

> Ensures every service in a Docker Compose file has a healthcheck block and depends_on uses condition: service_healthy. Trigger when generating or editing compose.yaml.

- Skill: `aborroy/docker-compose-healthcheck-injector` (Agent Skill)
- Install (CLI): `npx skillmds@latest add aborroy/docker-compose-healthcheck-injector`
- Raw SKILL.md: https://api.skillmd.com/api/skills/aborroy/docker-compose-healthcheck-injector/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: DevOps & Infra
- Author: aborroy (https://skillmd.com/u/aborroy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/aborroy/docker-compose-healthcheck-injector

---


# Docker Compose Healthcheck Injector

Validate and fix Docker Compose files for Alfresco deployments.

## Required Services
Verify these services are present (when applicable):
- `alfresco` — ACS repository
- `postgres` — database
- `activemq` — message broker
- `transform-core-aio` or individual transform services
- `search` — Solr or Elasticsearch
- `share` — (optional, if Share UI is used)

## Healthcheck Rules
Every service must have a `healthcheck` block with:
- `test` — appropriate health endpoint or command
- `interval` — recommended 30s
- `timeout` — recommended 10s
- `retries` — recommended 3
- `start_period` — recommended 60s for Alfresco, 30s for others

## Dependency Rules
- `depends_on` must use `condition: service_healthy` (not just service name)
- `alfresco` depends on `postgres` and `activemq`
- `share` depends on `alfresco`
- `search` depends on `alfresco` (for Solr) or is independent (Elasticsearch)

## Known Healthcheck Endpoints
- Alfresco: `curl -f http://localhost:8080/alfresco/api/-default-/public/alfresco/versions/1/probes/-ready-`
- Share: `curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/share/ | grep -qE '^[23]'`
- ActiveMQ: `curl -sf -u $${ACTIVEMQ_USER:-admin}:$${ACTIVEMQ_PASSWORD:-admin} http://localhost:8161/admin/ > /dev/null`
- PostgreSQL: `pg_isready -d alfresco -U alfresco`
- Solr *(Search Services)*: `curl -f -H "X-Alfresco-Search-Secret: $${SOLR_ALFRESCO_SECRET}" http://localhost:8983/solr/alfresco/admin/ping`
- OpenSearch / Elasticsearch *(Search Enterprise)*: `curl -s http://localhost:9200/_cluster/health | grep -q 'green\|yellow'`
- Transform: `curl -f http://localhost:8090/ready`

## Share Healthcheck — known bad patterns

**FLAG as ERROR** any Share healthcheck that uses a path other than `/share/`:

| Bad pattern | Why it fails |
|-------------|-------------|
| `http://localhost:8080/share/page/home` | `/page/home` does not exist in Share 26.x — Spring Surf throws a 500 `Could not resolve view 'home'`; the container stays `health: starting` forever and blocks dependent services (proxy) |
| `http://localhost:8080/share/page/dashboard` | Same issue — page routes are user-session-dependent |

**Correct pattern**: accept any 2xx or 3xx from the Share root (it redirects to the login page):
```yaml
test: ["CMD-SHELL", "curl -s -o /dev/null -w '%{http_code}' http://localhost:8080/share/ | grep -qE '^[23]'"]
```

## Output
List all missing healthchecks and incorrect dependencies. Provide corrected YAML blocks.

