# syntax=docker/dockerfile:1 # --------------------------------------------------------- # Stage 1: モデルダウンロード専用ステージ # huggingface_hub / pip / venv 等のビルド専用ツールを # 最終イメージに残さないための分離(ComfyUI側のbuilderステージに相当) # --------------------------------------------------------- FROM python:3.11-slim-bookworm AS downloader RUN apt-get update && apt-get install -y --no-install-recommends \ ca-certificates \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* WORKDIR /models RUN pip install --no-cache-dir -U huggingface_hub # モデルとmmprojをダウンロード RUN python3 -c 'from huggingface_hub import hf_hub_download; \ model_repo="HauhauCS/Gemma4-26B-A4B-Uncensored-HauhauCS-Balanced"; \ mmproj_repo="unsloth/gemma-4-26B-A4B-it-GGUF"; \ hf_hub_download(repo_id=model_repo, filename="Gemma4-26B-A4B-Uncensored-HauhauCS-Balanced-Q6_K_P.gguf", local_dir="/models"); \ hf_hub_download(repo_id=mmproj_repo, filename="mmproj-BF16.gguf", local_dir="/models")' # --------------------------------------------------------- # Stage 2: ランタイム # --------------------------------------------------------- FROM ghcr.io/ggml-org/llama.cpp:full # メモリアロケータ:jemalloc(CPU推論時の断片化対策・ComfyUI側と同じ狙い) RUN apt-get update && apt-get install -y --no-install-recommends \ libjemalloc2 \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # 非rootユーザーで実行(ComfyUI側と同じ方針) # 注: UID 1001 は通常ユーザー領域のため -r(システムアカウント)は付けない # (-r と SYS_UID_MAX(通常999)を超えるUIDの組み合わせはbuild時にwarningが出るだけで # fatalではないが、意味的に矛盾するため削除) RUN useradd -m -d /home/llama -s /bin/bash -g root -G sudo -u 1001 llama WORKDIR /app # ビルド成果物(モデルファイル)のみをコピー COPY --from=downloader --chown=llama:root /models /app USER llama # jemalloc 有効化 ENV LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libjemalloc.so.2 ENV MALLOC_CONF="background_thread:true,metadata_thp:auto,dirty_decay_ms:0,muzzy_decay_ms:0" # ENV OMP_NUM_THREADS=2 ENV KMP_AFFINITY=granularity=fine,compact ENV OMP_WAIT_POLICY=ACTIVE ENV KMP_BLOCKTIME=infinite CMD ["--server", \ "-m", "/app/Gemma4-26B-A4B-Uncensored-HauhauCS-Balanced-Q6_K_P.gguf", \ "--mmproj", "/app/mmproj-BF16.gguf", \ "--host", "0.0.0.0", \ "--port", "7860", \ "-t", "2", \ "--cache-type-k", "q8_0", \ "--cache-type-v", "q8_0", \ "-c", "128000", \ "-n", "64000"]