Skip to main content
DevOpsmarkus41

docker-build

Build Docker images with proper tagging, cache busting, and build tracking. Prevents stale image issues.

Stars
12
Source
markus41/claude
Updated
2026-05-11
Slug
markus41--claude--docker-build
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/markus41/claude/HEAD/.claude/skills/docker-build/SKILL.md -o .claude/skills/docker-build.md

Drops the SKILL.md into .claude/skills/docker-build.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

Docker Build with Tracking

Build a Docker image with proper tagging and tracking: $ARGUMENTS

Process

  1. Determine the image tag - Use git SHA or timestamp, NEVER use :latest alone

    GIT_SHA=$(git rev-parse --short HEAD)
    TIMESTAMP=$(date +%Y%m%d-%H%M%S)
    TAG="${GIT_SHA}-${TIMESTAMP}"
    
  2. Build with cache busting when needed

    • For production builds: docker build --no-cache --pull -t <registry>/<image>:${TAG} .
    • For dev builds: docker build -t <registry>/<image>:${TAG} .
    • Always also tag as :<branch>-latest for convenience
  3. Verify the build

    docker images | grep <image>
    docker inspect <registry>/<image>:${TAG} | jq '.[0].Created'
    
  4. Push to registry

    docker push <registry>/<image>:${TAG}
    docker push <registry>/<image>:<branch>-latest
    
  5. Verify in registry

    # For ACR:
    az acr repository show-tags --name <registry> --repository <image> --orderby time_desc --top 5
    # For Docker Hub:
    docker manifest inspect <registry>/<image>:${TAG}
    

Anti-Patterns (DO NOT)

  • Never build with just :latest tag
  • Never skip pushing after building
  • Never deploy without verifying the image exists in the registry
  • Never use imagePullPolicy: IfNotPresent with mutable tags