name: 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.
Pre-Push Checklist (MANDATORY)
Before pushing ANY Docker-related changes:
-
make validatepasses completely - No build errors or warnings
- Smoke tests pass
- Image sizes verified
- Clean validation from scratch
Quick Start
# Complete validation (ALWAYS run before push)
make validate
# Build and test everything
make all
# Clean and rebuild
make clean && make validate
Build Commands
# Build both images
make build
# Build individual images
make build-healthcheck
make build-pgbouncer
Test Commands
# Test both images
make test
# Test individual images
make test-healthcheck
make test-pgbouncer
Validation Pipeline
# 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)
# 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
# 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