Docker Development Environment
Manage the local Docker development environment. Action: $ARGUMENTS
Parse the arguments:
- First argument: action (
start,stop,restart,status,logs,clean,rebuild) --tools: Include pgadmin and redis-commander--mail: Include mailhog for email testing--storage: Include minio for object storage--all: Include all optional services- If no action given, default to
status
The compose files are in docker-compose/.
Actions
start
Start the development environment with hot reload:
cd /Users/liwu/Projects/go/blog
docker compose -f docker-compose/docker-compose.dev.yml up -d
Add profiles based on flags:
--tools:docker compose -f docker-compose/docker-compose.yml --profile tools up -d pgadmin redis-commander--mail:docker compose -f docker-compose/docker-compose.yml --profile mail up -d mailhog--storage:docker compose -f docker-compose/docker-compose.yml --profile storage up -d minio
After starting, show:
- Container status table
- Port mappings (backend: 3000, frontend: 5173, postgres: 5432, redis: 6379)
- Optional service URLs if started (pgadmin: 5050, mailhog: 8025, minio: 9001, redis-commander: 8081)
stop
docker compose -f docker-compose/docker-compose.dev.yml down
docker compose -f docker-compose/docker-compose.yml down
restart
Stop then start (preserving volumes).
status
Show detailed status:
docker compose -f docker-compose/docker-compose.dev.yml ps -a
docker compose -f docker-compose/docker-compose.yml ps -a
Also check:
- Database connectivity:
docker exec <postgres-container> pg_isready - Redis connectivity:
docker exec <redis-container> redis-cli ping - Volume usage:
docker system df -v | head -20
logs
Follow logs for all or a specific service:
docker compose -f docker-compose/docker-compose.dev.yml logs -f --tail=100
If a service name is passed after logs, filter to that service.
clean
Remove all containers, volumes, and orphaned networks:
docker compose -f docker-compose/docker-compose.dev.yml down -v --remove-orphans
docker compose -f docker-compose/docker-compose.yml down -v --remove-orphans
docker volume prune -f
Warn the user that this deletes database data.
rebuild
Force rebuild of dev containers (useful after Dockerfile or dependency changes):
docker compose -f docker-compose/docker-compose.dev.yml up -d --build --force-recreate
Troubleshooting
If any container is unhealthy or not running, automatically:
- Show the container logs (last 50 lines)
- Check if ports are already in use (
lsof -i :<port>) - Suggest fixes based on common issues:
- Port conflict → suggest stopping the conflicting process
- OOM → suggest increasing Docker memory
- DB connection refused → check if postgres is healthy first
Converted and distributed by TomeVault — claim your Tome and manage your conversions.