38 lines
1.4 KiB
Docker
38 lines
1.4 KiB
Docker
FROM golang:1.23-bookworm AS build
|
|
WORKDIR /src
|
|
COPY go.mod ./
|
|
COPY cmd ./cmd
|
|
COPY internal ./internal
|
|
RUN CGO_ENABLED=0 go build -o /out/jarvis ./cmd/homehub
|
|
|
|
# Build whisper.cpp inside the image so Docker STT does not depend on a host binary.
|
|
FROM debian:bookworm AS whisper-build
|
|
ARG WHISPER_CPP_REF=v1.9.1
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates git cmake build-essential && rm -rf /var/lib/apt/lists/*
|
|
WORKDIR /src
|
|
RUN git clone --depth 1 --branch "${WHISPER_CPP_REF}" https://github.com/ggml-org/whisper.cpp.git . \
|
|
&& cmake -S . -B build \
|
|
-DCMAKE_BUILD_TYPE=Release \
|
|
-DWHISPER_BUILD_TESTS=OFF \
|
|
-DWHISPER_BUILD_EXAMPLES=ON \
|
|
-DBUILD_SHARED_LIBS=OFF \
|
|
&& cmake --build build --config Release --target whisper-cli -j2 \
|
|
&& cp build/bin/whisper-cli /out-whisper-cli
|
|
|
|
FROM debian:bookworm-slim
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
ca-certificates ffmpeg poppler-utils tesseract-ocr tesseract-ocr-deu \
|
|
libstdc++6 libgomp1 \
|
|
&& rm -rf /var/lib/apt/lists/*
|
|
WORKDIR /app
|
|
COPY --from=build /out/jarvis /app/jarvis
|
|
COPY --from=whisper-build /out-whisper-cli /usr/local/bin/whisper-cli
|
|
COPY scripts /app/scripts
|
|
COPY skills /app/skills
|
|
RUN chmod 0755 /usr/local/bin/whisper-cli /app/scripts/*.sh \
|
|
&& find /app/skills -maxdepth 2 -type f -name run -exec chmod 0755 {} + \
|
|
&& mkdir -p /app/data /app/skills /models /tools
|
|
EXPOSE 8080
|
|
CMD ["/app/jarvis"]
|