Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
laurigates avatar

Configure Dockerfile

  • 63 installs
  • 49 repo stars
  • Updated August 4, 2026
  • laurigates/claude-plugins

Helps with devops & ci/cd tasks.

About

configure-dockerfile is a Claude Code skill for devops & ci/cd. It helps solo builders move faster with AI-assisted development.

  • configure-dockerfile
  • DevOps & CI/CD
  • AI-coding skill

Configure Dockerfile by the numbers

  • 63 all-time installs (skills.sh)
  • Ranked #643 of 1,435 DevOps & CI/CD skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/laurigates/claude-plugins --skill configure-dockerfile

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs63
repo stars49
Last updatedAugust 4, 2026
Repositorylaurigates/claude-plugins

What it does

Helps with devops & ci/cd tasks.

Files

SKILL.mdMarkdownGitHub ↗

/configure:dockerfile

Check and configure Dockerfile against project standards with emphasis on minimal images, non-root users, and multi-stage builds.

When to Use This Skill

Use this skill when...Use another approach when...
Checking Dockerfile compliance with standardsJust viewing Dockerfile (use Read tool)
Creating Dockerfile from templateDockerfile already follows all standards
Validating image size, security, multi-stage buildsNeed container runtime config (use /configure:container)
Setting up minimal Alpine/slim-based imagesProject uses specialized base images (custom requirements)
Ensuring non-root user configurationDebugging container issues (check logs, inspect runtime)

Context

  • Dockerfiles: !find . -maxdepth 1 \( -name 'Dockerfile' -o -name 'Dockerfile.*' -o -name '*.Dockerfile' \)
  • Dockerignore: !find . -maxdepth 1 -name \'.dockerignore\'
  • Project type: !find . -maxdepth 1 \( -name 'package.json' -o -name 'pyproject.toml' -o -name 'Cargo.toml' -o -name 'go.mod' \) -print -quit
  • Base images: !find . -maxdepth 1 \( -name 'Dockerfile' -o -name 'Dockerfile.*' -o -name '*.Dockerfile' \) -exec grep -hm5 '^FROM' {} +

Parameters

Parse from command arguments:

  • --check-only: Report compliance status without modifications
  • --fix: Apply fixes automatically without prompting
  • --type <type>: Override project type detection (frontend, python, go, rust)

Execution

Execute this Dockerfile compliance check:

Step 1: Detect project type and Dockerfiles

1. Find Dockerfile(s) in project root 2. Detect project type from context (package.json, pyproject.toml, go.mod, Cargo.toml) 3. Parse Dockerfile to analyze current configuration 4. Apply --type override if provided

Step 2: Verify latest base image versions

Before flagging outdated base images, use WebSearch or WebFetch to verify latest versions:

1. Node.js Alpine: Check Docker Hub for latest LTS Alpine tags 2. Python slim: Check Docker Hub for latest slim tags 3. nginx Alpine: Check Docker Hub for latest Alpine tags 4. Go Alpine: Check Docker Hub for latest Alpine tags 5. Rust Alpine: Check Docker Hub for latest Alpine tags

Step 3: Analyze compliance

Check the Dockerfile against these standards:

Frontend (Node.js) Standards:

CheckStandardSeverity
Build basenode:24-alpine (LTS)WARN if other
Runtime basenginx:1.30-alpineWARN if other
Multi-stageRequiredFAIL if missing
HEALTHCHECKRequiredFAIL if missing
Non-root userRequiredFAIL if missing
Build caching--mount=type=cache recommendedINFO
OCI LabelsRequired for GHCR integrationWARN if missing

Python Service Standards:

CheckStandardSeverity
Base imagepython:3.14-slimWARN if other
Multi-stageRequired for productionFAIL if missing
HEALTHCHECKRequiredFAIL if missing
Non-root userRequiredFAIL if missing
OCI LabelsRequired for GHCR integrationWARN if missing

OCI Container Labels:

LabelPurposeSeverity
org.opencontainers.image.sourceLinks to repositoryWARN if missing
org.opencontainers.image.descriptionPackage descriptionWARN if missing
org.opencontainers.image.licensesSPDX license identifierWARN if missing
org.opencontainers.image.versionSemantic version (via ARG)INFO if missing
org.opencontainers.image.revisionGit commit SHA (via ARG)INFO if missing

Step 4: Report results

Print a compliance report:

Dockerfile Compliance Report
================================
Project Type: <type> (detected)
Dockerfile: ./Dockerfile (found)

Configuration Checks:
  Build base      <image>           [PASS|WARN]
  Runtime base    <image>           [PASS|WARN]
  Multi-stage     <N> stages        [PASS|FAIL]
  HEALTHCHECK     <present|missing> [PASS|FAIL]
  Non-root user   <present|missing> [PASS|FAIL]
  Build caching   <enabled|missing> [PASS|INFO]

OCI Labels Checks:
  image.source       <present|missing> [PASS|WARN]
  image.description  <present|missing> [PASS|WARN]
  image.licenses     <present|missing> [PASS|WARN]

Recommendations:
  <list specific fixes needed>

If --check-only, stop here.

Step 5: Apply fixes (if requested)

If --fix flag is set or user confirms:

1. Missing Dockerfile: Create from standard template (see Standard Templates below) 2. Missing HEALTHCHECK: Add standard healthcheck 3. Missing multi-stage: Suggest restructure (manual fix needed) 4. Outdated base images: Update FROM lines 5. Missing OCI labels: Add LABEL instructions

Step 6: Update standards tracking

Update .project-standards.yaml:

components:
  dockerfile: "2025.1"

Standard Templates

Frontend (Node/Vite/nginx)

FROM node:24-alpine AS build

ARG SENTRY_AUTH_TOKEN
ARG VITE_SENTRY_DSN

WORKDIR /app

COPY package*.json ./
RUN --mount=type=cache,target=/root/.npm npm ci

COPY . .
RUN --mount=type=cache,target=/root/.npm \
    --mount=type=cache,target=/app/node_modules/.vite \
    npm run build

FROM nginx:1.30-alpine

# OCI labels for GHCR integration
LABEL org.opencontainers.image.source="https://github.com/OWNER/REPO" \
      org.opencontainers.image.description="Production frontend application" \
      org.opencontainers.image.licenses="MIT" \
      org.opencontainers.image.vendor="Your Organization"

# Dynamic labels via build args
ARG VERSION=dev
ARG BUILD_DATE
ARG VCS_REF
LABEL org.opencontainers.image.version="${VERSION}" \
      org.opencontainers.image.created="${BUILD_DATE}" \
      org.opencontainers.image.revision="${VCS_REF}"

COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx/default.conf.template /etc/nginx/templates/

EXPOSE 80

HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
  CMD wget --no-verbose --tries=1 --spider http://localhost/health || exit 1

Python Service

FROM python:3.14-slim AS builder

WORKDIR /app
COPY pyproject.toml uv.lock ./
RUN pip install uv && uv sync --frozen --no-dev

FROM python:3.14-slim

# OCI labels for GHCR integration
LABEL org.opencontainers.image.source="https://github.com/OWNER/REPO" \
      org.opencontainers.image.description="Production Python API server" \
      org.opencontainers.image.licenses="MIT" \
      org.opencontainers.image.vendor="Your Organization"

ARG VERSION=dev
ARG BUILD_DATE
ARG VCS_REF
LABEL org.opencontainers.image.version="${VERSION}" \
      org.opencontainers.image.created="${BUILD_DATE}" \
      org.opencontainers.image.revision="${VCS_REF}"

RUN useradd --create-home appuser
USER appuser
WORKDIR /app

COPY --from=builder /app/.venv /app/.venv
COPY --chown=appuser:appuser . .

ENV PATH="/app/.venv/bin:$PATH"
EXPOSE 8000

HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
  CMD curl -f http://localhost:8000/health || exit 1

CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]

Agentic Optimizations

ContextCommand
Check Dockerfile existsfind . -maxdepth 1 \( -name 'Dockerfile' -o -name 'Dockerfile.*' \) 2>/dev/null
Validate multi-stage buildgrep -c '^FROM' Dockerfile 2>/dev/null
Check for non-root usergrep -E '^USER [^root]' Dockerfile 2>/dev/null
Check base image`grep '^FROM' Dockerfile \
Quick compliance check/configure:dockerfile --check-only
Auto-fix issues/configure:dockerfile --fix

Flags

FlagDescription
--check-onlyReport status without offering fixes
--fixApply fixes automatically
--type <type>Override project type (frontend, python)

Notes

  • Node 24 is current Active LTS (Node 22 in maintenance)
  • nginx:1.30-alpine preferred over debian variant
  • HEALTHCHECK is critical for Kubernetes liveness probes
  • Build caching significantly improves CI/CD speed
  • Non-root user is mandatory for production containers

See Also

  • /configure:container - Comprehensive container infrastructure
  • /configure:skaffold - Kubernetes development configuration
  • /configure:all - Run all compliance checks
  • container-development skill - Container best practices

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.