From tooling
ACTIVATE when integrating a new Docker image, writing docker-compose.yml services, or adding external tools to a Docker stack. ACTIVATE for 'docker-compose', 'Docker image', 'container setup', 'service integration'. Covers: mandatory RTFM checklist before writing any docker-compose line (volumes, ports, env vars, healthchecks, internal architecture), image inspection commands, common anti-patterns that cause silent failures. DO NOT use for: Dockerfile writing, CI/CD pipeline configuration, Kubernetes.
How this skill is triggered — by the user, by Claude, or both
Slash command
/tooling:docker-integrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When integrating a third-party Docker image (RAGFlow, Traefik, PostgreSQL, Redis, n8n, etc.), **read the official configuration BEFORE writing any docker-compose line**.
When integrating a third-party Docker image (RAGFlow, Traefik, PostgreSQL, Redis, n8n, etc.), read the official configuration BEFORE writing any docker-compose line.
Docker images are rarely self-contained. They often depend on:
Never assume. Always verify.
Before writing a service in docker-compose.yml:
# Find the project's official docker-compose.yml
# On GitHub: docker/, deploy/, or repo root
Identify:
depends_on with condition: service_healthy?# View EXPOSE ports, CMD, ENTRYPOINT, volumes
docker inspect <image>:<tag>
# View running processes inside the container
docker exec <container> ps aux
# Check actually open ports
docker exec <container> bash -c 'for port in 80 443 8080 3000; do \
(echo >/dev/tcp/localhost/$port) 2>/dev/null && echo "Port $port OPEN" \
|| echo "Port $port closed"; done'
Some images run multiple internal processes (e.g., RAGFlow = nginx + Python API + workers). Key questions:
| Anti-pattern | Consequence |
|---|---|
| Assuming the port without checking | Traefik routes to the wrong service (404) |
| Ignoring config volumes | Service starts with default config ("Welcome to nginx!") |
| Copying an example without reading | Missing files, undefined variables |
| Guessing memory limits | Silent OOM kills |
| Not reading the Dockerfile/entrypoint | Misunderstanding the internal architecture |
The infiniflow/ragflow image requires 3 nginx files mounted as volumes:
volumes:
- ./nginx/ragflow.conf:/etc/nginx/conf.d/ragflow.conf
- ./nginx/proxy.conf:/etc/nginx/proxy.conf
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
Without them, nginx serves its default page instead of the RAGFlow UI. The entry port is 80 (nginx), not 9380 (internal Python API).
npx claudepluginhub fabiensalles/claude-marketplace --plugin toolingDefines and runs multi-container Docker applications with Docker Compose YAML, covering services, volumes, commands, environment variables, health checks, and resource limits.
References Docker and Docker Compose documentation for Dockerfile instructions, compose configurations, networking, volumes, databases, security, commands, and troubleshooting. Use before generating files or resolving errors.
Provides Docker Compose setups for local dev stacks with databases and caching, multi-stage Dockerfiles for dev/prod, and patterns for security, networking, volumes, healthchecks.