| 12345678910111213141516171819202122232425262728293031323334353637383940 |
- # Build stage
- FROM golang:1.21-alpine AS builder
- # Install build dependencies
- RUN apk add --no-cache gcc musl-dev
- WORKDIR /app
- # Copy go mod files
- COPY go.mod go.sum ./
- # Download dependencies
- RUN go mod download
- # Copy source code
- COPY . .
- # Build the application
- RUN CGO_ENABLED=1 GOOS=linux go build -a -installsuffix cgo -ldflags="-s -w" -o nvml-gpu-ha .
- # Runtime stage
- FROM nvidia/cuda:12.2-base-ubuntu22.04
- # Install runtime dependencies
- RUN apt-get update && \
- apt-get install -y --no-install-recommends \
- ca-certificates && \
- rm -rf /var/lib/apt/lists/*
- # Copy the binary from builder stage
- COPY --from=builder /app/nvml-gpu-ha /usr/local/bin/nvml-gpu-ha
- # Create non-root user
- RUN useradd -r -s /bin/false nvml-gpu
- USER nvml-gpu
- # Default command
- ENTRYPOINT ["/usr/local/bin/nvml-gpu-ha"]
- CMD ["--mqtt-host=localhost", "--mqtt-port=1883", "--polling-period=30"]
|