# Build stage FROM golang:1.27-alpine AS builder WORKDIR /app # Install build dependencies RUN apk add --no-cache git make # Copy go mod files COPY go.mod go.sum ./ RUN go mod download # Copy source COPY . . # Tidy and build binary RUN go mod tidy && CGO_ENABLED=0 GOOS=linux go build -o /ym-dl ./cmd/ym-dl # Runtime stage FROM gcr.io/distroless/static-debian12:nonroot WORKDIR /app # Copy binary COPY --from=builder /ym-dl /app/ym-dl # Copy config example COPY config.yaml.example /app/config.yaml.example # Run as non-root user (distroless uses nonroot:nonroot by default) USER nonroot:nonroot ENTRYPOINT ["/app/ym-dl"] CMD ["--config", "/config/config.yaml"]