文件预览

docker_detect.py

查看 Web Search Plus 技能包中的文件内容。

文件内容

scripts/docker_detect.py

import os
import sys
from pathlib import Path


def is_docker() -> bool:
    """Detect if running inside a Docker container.
    
    Checks multiple signals:
    - /.dockerenv file
    - /proc/1/cgroup containing 'docker' or 'kubepods'
    - DOCKER environment variable
    """
    if os.path.exists("/.dockerenv"):
        return True
    
    try:
        with open("/proc/1/cgroup", "r") as f:
            cgroup = f.read().lower()
            if "docker" in cgroup or "kubepods" in cgroup:
                return True
    except (FileNotFoundError, PermissionError):
        pass
    
    if os.environ.get("DOCKER"):
        return True
    
    return False


def get_searxng_url() -> str:
    """Get the appropriate SearXNG URL based on environment.
    
    Returns:
        - http://172.17.0.1:8080 if running in Docker
        - http://127.0.0.1:8080 if running on host
    """
    if is_docker():
        return "http://172.17.0.1:8080"
    return "http://127.0.0.1:8080"


def ensure_searxng_env():
    """Set SEARXNG_INSTANCE_URL environment variable if not already set."""
    if "SEARXNG_INSTANCE_URL" not in os.environ:
        os.environ["SEARXNG_INSTANCE_URL"] = get_searxng_url()


if __name__ == "__main__":
    print(f"In Docker: {is_docker()}")
    print(f"SearXNG URL: {get_searxng_url()}")