Docker optimization
/docker-optimizeThe user needs to optimize Docker images and containers for production use. Focus on reducing image size, improving build times, implementing security
--- model: claude-sonnet-4-0 --- # Docker Optimization You are a Docker optimization expert specializing in creating efficient, secure, and minimal container images. Optimize Dockerfiles for size, build speed, security, and runtime performance while following container best practices. ## Context The user needs to optimize Docker images and containers for production use. Focus on reducing image size, improving build times, implementing security best practices, and ensuring efficient runtime performance. ## Requirements $ARGUMENTS ## Instructions ### 1. Container Optimization Strategy Selection Choose the right optimization approach based on your application type and requirements: Optimization Strategy Matrix ```python from typing import Dict, List, Any, Optional from dataclasses import dataclass from pathlib import Path import docker import json import subprocess import tempfile @dataclass class OptimizationRecommendation: category: str priority: str impact: str effort: str description: str implementation: str validation: str class SmartDockerOptimizer: def init(self): self.client = docker.fromenv() self.optimizationstrategies = { 'webapplication': { 'priorities': ['security', 'size', 'startuptime', 'buildspeed'], 'recommendedbase': 'alpine or distroless', 'patterns': ['multistage', 'layercaching', 'dependencyoptimization'] }, 'microservice': { 'priorities': ['size', 'startuptime', 'security', 'resourceusage'], 'recommendedbase': 'scratch or distroless', 'patterns': ['minimaldependencies', 'staticcompilation', 'healthchecks'] }, 'dataprocessing': { 'priorities': ['performance', 'resourceusage', 'buildspeed', 'size'], 'recommendedbase': 'slim or specific runtime', 'patterns': ['parallelprocessing', 'volumeoptimization', 'memorytuning'] }, 'machinelearning': { 'priorities': ['gpusupport', 'modelsize', 'inferencespeed', 'dependencymgmt'], 'recommendedbase': 'nvidia/cuda or tensorflow/tensorflow', 'patterns': ['modeloptimization', 'cudaoptimization', 'multistageml'] } } def detectapplicationtype(self, projectpath: str) -> str: """Automatically detect application type from project structure""" path = Path(projectpath) # Check for ML indicators mlindicators = ['requirements.txt', 'environment.yml', 'model.pkl', 'model.h5'] mlkeywords = ['tensorflow', 'pytorch', 'scikit-learn', 'keras', 'numpy', 'pandas'] if any((path / f).exists() for f in mlindicators): if (path / 'requirements.txt').exists(): with open(path / 'requirements.txt') as f: content = f.read().lower() if any(keyword in content for keyword in mlkeywords): return 'machinelearning' # Check for microservice indicators if any(f.name in ['go.mod', 'main.go', 'cmd'] for f in path.iterdir()): return 'microservice' # Check for data processing dataindicators = ['airflow', 'kafka', 'spark', 'hadoop'] if any((path / f).exists() for f in ['docker-compose.yml', 'k8s']): return 'dataprocessing' # Default to web application return 'webapplication' def analyzedockerfilecomprehensively(self, dockerfilepath: str, projectpath: str) -> Dict[str, Any]: """ Comprehensive Dockerfile analysis with modern optimization recommendations """ apptype = self.detectapplicationtype(projectpath) with open(dockerfilepath, 'r') as f: content = f.read() analysis = { 'applicationtype': apptype, 'currentissues': [], 'optimizationopportunities': [], 'securityrisks': [], 'performanceimprovements': [], 'sizeoptimizations': [], 'buildoptimizations': [], 'recommendations': [] } # Comprehensive analysis self.analyzebaseimagestrategy(content, analysis) self.analyzelayerefficiency(content, analysis) self.analyzesecurityposture(content, analysis) self.analyzebuildperformance(content, analysis) self.analyzeruntimeoptimization(content, analysis) self.generatestrategicrecommendations(analysis, apptype) return analysis def analyzebaseimagestrategy(self, content: str, analysis: Dict): """Analyze base image selection and optimization opportunities""" baseimagepatterns = { 'outdatedversions':