Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
name: yuki

services:
  bot:
    image: ghcr.io/yuanyeyoutao/yuki:${YUKI_VERSION:?missing}
    init: true
    restart: unless-stopped
    env_file:
      - path: .env
        required: false
    extra_hosts:
      - "host.docker.internal:host-gateway"
    environment:
      HTTP_PROXY: "${http_proxy-${HTTP_PROXY-}}"
      http_proxy: "${http_proxy-${HTTP_PROXY-}}"
      HTTPS_PROXY: "${https_proxy-${HTTPS_PROXY-}}"
      https_proxy: "${https_proxy-${HTTPS_PROXY-}}"
      ALL_PROXY: "${all_proxy-${ALL_PROXY-}}"
      all_proxy: "${all_proxy-${ALL_PROXY-}}"
      NO_PROXY: "${no_proxy-${NO_PROXY-localhost,127.0.0.1,::1,bot,snowluma}}"
      no_proxy: "${no_proxy-${NO_PROXY-localhost,127.0.0.1,::1,bot,snowluma}}"
      CODE_MODE_ENABLED: "false"
      COMPOSE_PROFILES: ${COMPOSE_PROFILES:-}
      APP_HOST: 0.0.0.0
      APP_PORT: 8080
      DATABASE_URL: sqlite+aiosqlite:////app/data/yuki.db
      MODEL_PROFILES_FILE: /app/webui-config/model_profiles.toml
      SOUL_FILE: /app/character/SOUL.md
      WORKSPACE_DIRECTORY: /app/workspace
      CONVERSATION_MEDIA_CACHE_DIRECTORY: /app/data/conversation-media-cache
      SOCIAL_TRANSFER_DIRECTORY: /app/social-transfer
      SOCIAL_GATEWAY_TRANSFER_DIRECTORY: /yuki-transfer
      SANDBOX_SOCKET: /run/yuki-sandbox/manager.sock
      SNOWLUMA_CONFIG_OUTPUT: /app/snowluma-data/config/onebot.json
      SNOWLUMA_REVERSE_WS_URL: ws://bot:8080/onebot/v11/snowluma/ws
      SNOWLUMA_UID: ${SNOWLUMA_UID:-1000}
      SNOWLUMA_GID: ${SNOWLUMA_GID:-1000}
      ONEBOT_ACCESS_TOKEN: ${ONEBOT_ACCESS_TOKEN:-}
    expose:
      - "8080"
    volumes:
      - ./data:/app/data
      - ./character:/app/character
      - ./workspace:/app/workspace
      - ./social-transfer:/app/social-transfer
      - /run/yuki-sandbox:/run/yuki-sandbox:ro
      - ./snowluma-data:/app/snowluma-data
      - ./config:/app/config:ro
      - ./webui-config:/app/webui-config:ro
      - ./plugins:/app/plugins:ro
    networks:
      - yuki-network
    healthcheck:
      test:
        - CMD
        - python
        - -c
        - "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8080/livez', timeout=3)"
      interval: 10s
      timeout: 5s
      retries: 5
      start_period: 15s
    stop_grace_period: 20s

  snowluma:
    profiles: ["snowluma"]
    image: ${SNOWLUMA_IMAGE:-motricseven7/snowluma:latest}
    # The upstream setup starts a web viewer unconditionally. Desktop talks to x11vnc.
    command:
      - /bin/sh
      - -ec
      - |
        if [ -f /opt/noVNC/utils/novnc_proxy ]; then
          ln -sf /bin/true /opt/noVNC/utils/novnc_proxy
        fi
        exec /root/start.sh
    restart: unless-stopped
    init: true
    depends_on:
      bot:
        condition: service_healthy
    shm_size: ${SNOWLUMA_SHM_SIZE:-1gb}
    cap_add:
      - SYS_PTRACE
    security_opt:
      - seccomp=unconfined
    environment:
      VNC_PASSWD: ${SNOWLUMA_VNC_PASSWORD:-replace-with-a-long-random-vnc-password}
      SNOWLUMA_UID: ${SNOWLUMA_UID:-1000}
      SNOWLUMA_GID: ${SNOWLUMA_GID:-1000}
      SNOWLUMA_WEBUI_HOST: 0.0.0.0
      SNOWLUMA_WEBUI_PORT: 5099
      SNOWLUMA_LOG_LEVEL: ${SNOWLUMA_LOG_LEVEL:-info}
      SNOWLUMA_SCREEN: ${SNOWLUMA_SCREEN:-1920x1080x24}
      SNOWLUMA_HOOK_AUTOLOAD: ${SNOWLUMA_HOOK_AUTOLOAD:-1}
      SNOWLUMA_EXTRA_QQ_HOMES: ${SNOWLUMA_EXTRA_QQ_HOMES:-}
      SNOWLUMA_QQ_FLAGS: ${SNOWLUMA_QQ_FLAGS:---disable-gpu --disable-software-rasterizer --disable-gpu-compositing}
    ports:
      - "${SNOWLUMA_WEBUI_BIND_ADDRESS:-127.0.0.1}:${SNOWLUMA_WEBUI_HOST_PORT:-5099}:5099"
    volumes:
      - ./snowluma-data:/app/data
      - ./snowluma-qq-config:/app/.config
      - ./snowluma-qq-data:/app/.local/share
      - ./snowluma-extra-accounts:/app/qq-accounts
      - ./social-transfer:/yuki-transfer:ro
    networks:
      - yuki-network
    stop_grace_period: 30s

networks:
  yuki-network:
    name: yuki-network
    driver: bridge