# syntax=docker/dockerfile:1.7 FROM --platform=$BUILDPLATFORM golang:1.25-alpine AS builder WORKDIR /src ARG VERSION=dev ARG TARGETOS ARG TARGETARCH COPY go.mod go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ go mod download COPY . . RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=${TARGETOS:-linux} GOARCH=${TARGETARCH} go build -trimpath -ldflags="-s -w -X main.Version=${VERSION}" \ -o /out/jukebox ./cmd/jukebox FROM alpine:3.19 RUN apk add --no-cache tzdata ca-certificates rsync ffmpeg WORKDIR /app COPY --from=builder /out/jukebox . VOLUME ["/media", "/mnt/usb", "/config"] EXPOSE 8080 ENTRYPOINT ["/app/jukebox"] CMD ["--config", "/config/config.json", "--addr", ":8080", "--media", "/media", "--mount", "/mnt/usb"]