mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
8a53cb9665
- Update Dockerfile to use golang:1.25-alpine to match go.mod (go 1.25.7) - Optimize logger by avoiding string concatenation in file writes - Add explicit empty string assignment for fieldStr when no fields These changes improve build consistency and reduce memory allocations in the hot logging path, which is important for the project's goal of running on resource-constrained devices (<10MB RAM). Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
44 lines
1.1 KiB
Docker
44 lines
1.1 KiB
Docker
# ============================================================
|
|
# Stage 1: Build the picoclaw binary
|
|
# ============================================================
|
|
FROM golang:1.25-alpine AS builder
|
|
|
|
RUN apk add --no-cache git make
|
|
|
|
WORKDIR /src
|
|
|
|
# Cache dependencies
|
|
COPY go.mod go.sum ./
|
|
RUN go mod download
|
|
|
|
# Copy source and build
|
|
COPY . .
|
|
RUN make build
|
|
|
|
# ============================================================
|
|
# Stage 2: Minimal runtime image
|
|
# ============================================================
|
|
FROM alpine:3.23
|
|
|
|
RUN apk add --no-cache ca-certificates tzdata curl
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
|
CMD wget -q --spider http://localhost:18790/health || exit 1
|
|
|
|
# Copy binary
|
|
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
|
|
|
# Create non-root user and group
|
|
RUN addgroup -g 1000 picoclaw && \
|
|
adduser -D -u 1000 -G picoclaw picoclaw
|
|
|
|
# Switch to non-root user
|
|
USER picoclaw
|
|
|
|
# Run onboard to create initial directories and config
|
|
RUN /usr/local/bin/picoclaw onboard
|
|
|
|
ENTRYPOINT ["picoclaw"]
|
|
CMD ["gateway"]
|