Docker build and test workflow with mandatory pre-push validation checklist to prevent CI/CD failures
Scanned 9/20/2026
Install to Claude Code
npx -y skills add tstapler/dotfiles --skill infra-docker-build-test --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Infra Docker Build Test?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/tstapler-infra-docker-build-test)More formats (shields.io, HTML) on the badges page.
---
name: infra-docker-build-test
description: Docker build and test workflow with mandatory pre-push validation checklist to prevent CI/CD failures
---
# Docker Build & Test
Local Docker testing workflow to prevent CI/CD failures. **CRITICAL**: Always run `make validate` before pushing.
> For running integration tests against the built images on Kubernetes, apply the `infra-testing` skill.
## Pre-Push Checklist (MANDATORY)
Before pushing ANY Docker-related changes:
- [ ] `make validate` passes completely
- [ ] No build errors or warnings
- [ ] Smoke tests pass
- [ ] Image sizes verified
- [ ] Clean validation from scratch
## Quick Start
```bash
# Complete validation (ALWAYS run before push)
make validate
# Build and test everything
make all
# Clean and rebuild
make clean && make validate
```
## Build Commands
```bash
# Build both images
make build
# Build individual images
make build-healthcheck
make build-pgbouncer
```
## Test Commands
```bash
# Test both images
make test
# Test individual images
make test-healthcheck
make test-pgbouncer
```
## Validation Pipeline
```bash
# 1. Complete validation (recommended)
make validate
# 2. Check for errors
make build 2>&1 | grep -i error
# 3. Verify functionality
make test
# 4. Check image sizes
make info
# 5. Clean validation
make clean && make validate
```
## Manual Docker Commands (Fallback)
```bash
# Build
docker build -f Dockerfile.healthcheck -t pgbouncer-healthcheck:latest .
docker build -f Dockerfile.pgbouncer -t pgbouncer:latest .
# Test
docker run --rm pgbouncer-healthcheck:latest /usr/local/bin/healthcheck-unified.py --help
docker run --rm pgbouncer:latest /usr/local/bin/pgbouncer --version
# Check sizes
docker images | grep -E "(pgbouncer-healthcheck|pgbouncer)"
```
## Troubleshooting
| Issue | Solution |
|-------|----------|
| Docker daemon not running | Start Docker Desktop |
| Permission denied | Verify Docker access: `docker info` |
| Build failures | Use `make debug` for verbose output |
| Disk space | Use `make clean-all` |
### Debug Commands
```bash
# Verbose debugging
make debug
# Check prerequisites
make check
# Build with no cache
docker build --no-cache -f Dockerfile.pgbouncer -t pgbouncer:debug .
# Check layers
docker history pgbouncer:latest
```
## Command Reference
| Command | Purpose |
|---------|---------|
| `make validate` | Complete validation pipeline |
| `make all` | Build and test everything |
| `make build` | Build both images |
| `make test` | Test both images |
| `make info` | Show image information |
| `make clean` | Remove local images |
| `make debug` | Build with verbose output |
| `make check` | Check prerequisites |
| `make push` | Push to ECR (requires AWS auth) |
## Key Principles
- ✅ **Simple and reliable** - standard Docker + Make workflow
- ✅ **No complex tooling** - just Docker + Make (built-in)
- ✅ **Easy debugging** - familiar Docker commands
- ✅ **CI/CD compatible** - same commands locally and in pipelines
---
## Related Skills
| Skill | When to apply |
|-------|--------------|
| `infra-testing` | Run TestKube/Kubernetes integration tests against built images |
| `github-actions-debugging` | Diagnose Docker-related CI failures in GitHub Actions |
| `security-review` | Audit Dockerfile for vulnerabilities or secret exposure |
| `lean-agent-loop` | Iterate build/validate failures across categories with parallel agents until `make validate` is clean |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!