FROM golang:1.24-alpine AS builder # Install git and other build dependencies RUN apk add --no-cache git make # Set working directory WORKDIR /app # Copy go mod files first for better caching COPY go.mod go.sum ./ RUN go mod download # Copy source code COPY . . # Build the weed binaries without CGO RUN CGO_ENABLED=0 GOOS=linux go build -ldflags "-s -w" -o weed ./weed/ RUN CGO_ENABLED=0 GOOS=linux go build -ldflags "-s -w" -o weed-db ./cmd/weed-db # Final stage - minimal runtime image FROM alpine:latest # Install ca-certificates for HTTPS calls and netcat for health checks RUN apk --no-cache add ca-certificates netcat-openbsd curl WORKDIR /root/ # Copy the binaries from builder stage COPY --from=builder /app/weed . COPY --from=builder /app/weed-db . # Make it executable RUN chmod +x ./weed ./weed-db # Expose ports EXPOSE 9333 8888 8333 8085 9533 5432 # Create data directory RUN mkdir -p /data # Default command (can be overridden) CMD ["./weed", "server", "-dir=/data"]