FROM golang:1.25-bookworm AS build WORKDIR /src COPY go.mod go.sum ./ RUN go mod download COPY . . ARG VERSION=dev RUN CGO_ENABLED=0 go build -trimpath -ldflags "-s -w -X main.version=${VERSION}" -o /out/vibesonic ./cmd/vibesonic FROM debian:bookworm-slim RUN apt-get update && apt-get install -y --no-install-recommends ffmpeg mpv ca-certificates \ && rm -rf /var/lib/apt/lists/* \ && useradd -r -u 10001 -d /data -s /usr/sbin/nologin vibesonic \ && mkdir -p /data /music \ && chown -R vibesonic:vibesonic /data COPY --from=build /out/vibesonic /usr/local/bin/vibesonic USER vibesonic VOLUME ["/data", "/music"] EXPOSE 8080 ENV VIBESONIC_LISTEN_ADDR=:8080 \ VIBESONIC_DATA_DIR=/data \ VIBESONIC_DB=/data/vibesonic.db \ VIBESONIC_MUSIC_DIRS=/music \ VIBESONIC_FFMPEG_PATH=/usr/bin/ffmpeg \ VIBESONIC_FFPROBE_PATH=/usr/bin/ffprobe \ VIBESONIC_MPV_PATH=/usr/bin/mpv \ VIBESONIC_SCAN_INTERVAL=1h ENTRYPOINT ["/usr/local/bin/vibesonic"]