docker-compose.yml
Rama main · réplica de lectura del repositorio original.
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