build: restore missing Dockerfile.rpi for K3s builds
This commit is contained in:
parent
797ffa4091
commit
c8fc7b0334
1 changed files with 68 additions and 0 deletions
68
docker/Dockerfile.rpi
Normal file
68
docker/Dockerfile.rpi
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
# ============================================================
|
||||
# Stage 1: Build the picoclaw binaries
|
||||
# ============================================================
|
||||
FROM --platform=linux/arm64 golang:1.26-alpine AS builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Cache dependencies
|
||||
COPY go.mod go.sum ./
|
||||
RUN go mod download
|
||||
|
||||
# Copy source
|
||||
COPY . .
|
||||
|
||||
# Build main binary for ARM64 (Raspberry Pi)
|
||||
# We enable standard JSON and Go-based OLM for Matrix
|
||||
RUN CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -tags goolm,stdjson -ldflags="-s -w" -o bin/picoclaw ./cmd/picoclaw
|
||||
|
||||
# Build additional tools from cmd/ as individual binaries (e.g. launcher-tui)
|
||||
# This follows your requested tool-building pattern
|
||||
RUN set -e; \
|
||||
mkdir -p bin/tools; \
|
||||
for d in $(find cmd -maxdepth 1 -type d -not -path 'cmd' -not -path 'cmd/picoclaw'); do \
|
||||
name=$(basename "$d"); \
|
||||
echo "Building tool: $name"; \
|
||||
CGO_ENABLED=0 GOOS=linux GOARCH=arm64 go build -tags goolm,stdjson -ldflags="-s -w" -o bin/tools/$name ./$d; \
|
||||
done
|
||||
|
||||
# ============================================================
|
||||
# Stage 2: Final runtime image - lightweight Alpine
|
||||
# ============================================================
|
||||
FROM --platform=linux/arm64 alpine:latest
|
||||
|
||||
# Install runtime dependencies as requested
|
||||
RUN apk add --no-cache \
|
||||
ca-certificates \
|
||||
openssh-client \
|
||||
bash \
|
||||
tzdata && \
|
||||
update-ca-certificates
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Copy main binary
|
||||
COPY --from=builder /app/bin/picoclaw /app/picoclaw
|
||||
|
||||
# Copy additional tools (PICOCLAW_HOME typically looks for binaries here)
|
||||
RUN mkdir -p /app/bin/tools
|
||||
COPY --from=builder /app/bin/tools/ /app/bin/tools/
|
||||
RUN chmod -R +x /app/bin/tools || true
|
||||
|
||||
# App configuration: use the example template by default
|
||||
COPY config/config.example.json ./config.json
|
||||
|
||||
# If you have specific MCP skill configurations, copy them here
|
||||
# Matching your requested template structure
|
||||
RUN mkdir -p ./config
|
||||
COPY config/config.example.json ./config/mcp_skills.json
|
||||
|
||||
# Initial setup: run onboard to create initial directories and local state
|
||||
RUN /app/picoclaw onboard
|
||||
|
||||
# Expose Gateway port
|
||||
EXPOSE 18790
|
||||
|
||||
# Standard entrypoint for PicoClaw
|
||||
ENTRYPOINT ["/app/picoclaw"]
|
||||
CMD ["gateway"]
|
||||
Loading…
Add table
Reference in a new issue