diff --git a/app/services/tcgplayer.py b/app/services/tcgplayer.py index 3f1052f..48e511b 100644 --- a/app/services/tcgplayer.py +++ b/app/services/tcgplayer.py @@ -121,20 +121,45 @@ class TCGPlayerService: return None def is_in_docker(self) -> bool: - """Check if we're running inside a Docker container""" + """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() - is_docker = 'docker' in content - logger.debug(f"Docker detection via cgroup: {is_docker}") - return is_docker + 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}") - # If we can't read the file, check for common Docker env vars - env_check = bool(os.environ.get('DOCKER_CONTAINER', False) or - os.environ.get('IN_DOCKER', False)) - logger.debug(f"Docker detection via env vars: {env_check}") - return env_check + + # 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 def _send_request(self, url: str, method: str, data=None, except_302=False) -> requests.Response: """Send a request with the specified cookies"""