import os import logging logger = logging.getLogger(__name__) class DockerUtil: def __init__(self): pass def is_in_docker(self) -> bool: """Check if we're running inside a Docker container using multiple methods""" # Method 1: Check cgroup try: with open('/proc/1/cgroup', 'r') as f: content = f.read().lower() if any(container_id in content for container_id in ['docker', 'containerd', 'kubepods']): logger.debug("Docker detected via cgroup") return True except Exception as e: logger.debug(f"Could not read cgroup file: {e}") # Method 2: Check /.dockerenv file if os.path.exists('/.dockerenv'): logger.debug("Docker detected via /.dockerenv file") return True # Method 3: Check environment variables docker_env = any(os.environ.get(var, False) for var in [ 'DOCKER_CONTAINER', 'IN_DOCKER', 'KUBERNETES_SERVICE_HOST', # For k8s 'DOCKER_HOST' ]) if docker_env: logger.debug("Docker detected via environment variables") return True # Method 4: Check container runtime try: with open('/proc/self/mountinfo', 'r') as f: content = f.read().lower() if any(rt in content for rt in ['docker', 'containerd', 'kubernetes']): logger.debug("Docker detected via mountinfo") return True except Exception as e: logger.debug(f"Could not read mountinfo: {e}") logger.debug("No Docker environment detected") return False