Some checks failed
Release / semantic-release (push) Successful in 19s
tests / Unit tests (Linux, Python 3.11) (push) Successful in 9m54s
Release / build-linux (push) Failing after 7m14s
Release / build-windows (push) Has been cancelled
Release / build-macos (arm64, macos-latest) (push) Has been cancelled
Release / build-macos (x64, macos-15-intel) (push) Has been cancelled
Release / release-main (push) Has been cancelled
Release / release-develop (push) Has been cancelled
GPU acceleration is now on by default and verified end-to-end on the Blackwell RTX 5050 (sm_120): - Ollama offloads 100% to GPU (log: library=CUDA compute=12.0, BLACKWELL_NATIVE_FP4=1). compose passes GPU via CDI (devices: nvidia.com/gpu=all) to both ollama and javis. - Whisper STT on GPU: faster-whisper>=1.1.0 + nvidia-cublas/cudnn cu12, LD_LIBRARY_PATH baked into the image. Verified float16 transcribe on sm_120; bridge auto-falls back to CPU when no GPU is present. - Model: default chat model -> qwen3:8b (best 8GB-VRAM tool-calling, ~5GB Q4). Embed stays nomic-embed-text. - README documents the host one-time setup (nvidia-container-toolkit + `nvidia-ctk cdi generate`) and GPU on/off. Verified: image builds; GPU visible in both containers via compose; ollama ps = 100% GPU; faster-whisper cuda OK + CPU fallback OK; bridge /health 200.
55 lines
2.3 KiB
Docker
55 lines
2.3 KiB
Docker
# ============================================================================
|
|
# Javis Bot — all-in-one container
|
|
# VNC + XFCE desktop + Chrome + Python brain bridge + Node/bun Discord bot.
|
|
# Ollama (the LLM backend) runs as a separate service (see docker-compose.yml).
|
|
# ============================================================================
|
|
FROM ubuntu:24.04
|
|
|
|
ENV DEBIAN_FRONTEND=noninteractive \
|
|
LANG=C.UTF-8 \
|
|
DISPLAY=:1 \
|
|
PATH=/opt/venv/bin:/root/.bun/bin:/usr/local/bin:/usr/bin:/bin \
|
|
NVIDIA_VISIBLE_DEVICES=all \
|
|
NVIDIA_DRIVER_CAPABILITIES=compute,utility \
|
|
LD_LIBRARY_PATH=/opt/venv/lib/python3.12/site-packages/nvidia/cublas/lib:/opt/venv/lib/python3.12/site-packages/nvidia/cudnn/lib
|
|
|
|
# --- System packages: desktop, VNC, Chrome deps, ffmpeg, python, ocr ---
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates curl wget gnupg unzip procps \
|
|
tigervnc-standalone-server tigervnc-common tigervnc-tools \
|
|
xfce4 xfce4-goodies dbus-x11 x11-utils xfonts-base \
|
|
fonts-noto-cjk fonts-noto-cjk-extra fonts-nanum \
|
|
ffmpeg tesseract-ocr \
|
|
python3 python3-venv python3-pip \
|
|
novnc websockify supervisor gettext-base \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
|
|
# --- Google Chrome (stable) ---
|
|
RUN wget -q -O /tmp/chrome.deb https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb \
|
|
&& (apt-get update && apt-get install -y --no-install-recommends /tmp/chrome.deb || (apt-get -f install -y)) \
|
|
&& rm -f /tmp/chrome.deb && rm -rf /var/lib/apt/lists/*
|
|
|
|
# --- bun (Discord bot runtime/package manager) ---
|
|
RUN curl -fsSL https://bun.sh/install | bash
|
|
|
|
# --- Python brain/bridge deps (slim set) ---
|
|
COPY bridge/requirements-bridge.txt /app/bridge/requirements-bridge.txt
|
|
RUN python3 -m venv /opt/venv \
|
|
&& /opt/venv/bin/pip install --no-cache-dir --upgrade pip \
|
|
&& /opt/venv/bin/pip install --no-cache-dir -r /app/bridge/requirements-bridge.txt
|
|
|
|
# --- Discord bot deps (cache layer on lockfile) ---
|
|
COPY bot/package.json bot/bun.lock /app/bot/
|
|
RUN cd /app/bot && bun install --frozen-lockfile || bun install
|
|
|
|
# --- App source ---
|
|
COPY . /app
|
|
WORKDIR /app
|
|
|
|
# --- Default Piper voice (best-effort at build; entrypoint retries if absent) ---
|
|
RUN bash docker/download-piper.sh || true
|
|
|
|
EXPOSE 5901 6080 8765
|
|
|
|
ENTRYPOINT ["/app/docker/entrypoint.sh"]
|