fix(docker): run self-built images as root for parity with release (#2435)
The self-built docker/Dockerfile and docker/Dockerfile.heavy created a dedicated picoclaw user (uid 1000) and stored config at /home/picoclaw/.picoclaw, while the released images from Dockerfile.goreleaser (and Dockerfile.full) run as root at /root/.picoclaw. Both docker-compose files mount ./data:/root/.picoclaw, so self-built images silently broke when used with the shared compose. Drop the picoclaw user switch and align both Dockerfiles on root + /root/.picoclaw. Dockerfile also adopts the release entrypoint.sh so first-run behavior matches between self-built and release tags. Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a9720daa45
commit
5e44a99410
2 changed files with 6 additions and 22 deletions
|
|
@ -26,18 +26,9 @@ RUN apk add --no-cache ca-certificates tzdata curl
|
||||||
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||||
CMD wget -q --spider http://localhost:18790/health || exit 1
|
CMD wget -q --spider http://localhost:18790/health || exit 1
|
||||||
|
|
||||||
# Copy binary
|
# Copy binary and first-run entrypoint (same as release image).
|
||||||
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
||||||
|
COPY docker/entrypoint.sh /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
# Create non-root user and group
|
ENTRYPOINT ["/entrypoint.sh"]
|
||||||
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"]
|
|
||||||
|
|
|
||||||
|
|
@ -48,20 +48,13 @@ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
|
||||||
# Copy binary
|
# Copy binary
|
||||||
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
COPY --from=builder /src/build/picoclaw /usr/local/bin/picoclaw
|
||||||
|
|
||||||
# Reuse existing node user (UID/GID 1000) — rename to picoclaw
|
|
||||||
RUN deluser node 2>/dev/null; delgroup node 2>/dev/null; \
|
|
||||||
addgroup -g 1000 picoclaw 2>/dev/null; \
|
|
||||||
adduser -D -u 1000 -G picoclaw -h /home/picoclaw picoclaw 2>/dev/null || true
|
|
||||||
|
|
||||||
USER picoclaw
|
|
||||||
|
|
||||||
# Run onboard to create initial directories and config
|
# Run onboard to create initial directories and config
|
||||||
RUN /usr/local/bin/picoclaw onboard
|
RUN /usr/local/bin/picoclaw onboard
|
||||||
|
|
||||||
# Copy default workspace
|
# Copy default workspace
|
||||||
COPY --chown=picoclaw:picoclaw workspace/ /home/picoclaw/.picoclaw/workspace/
|
COPY workspace/ /root/.picoclaw/workspace/
|
||||||
|
|
||||||
VOLUME /home/picoclaw/.picoclaw/workspace
|
VOLUME /root/.picoclaw/workspace
|
||||||
|
|
||||||
ENTRYPOINT ["picoclaw"]
|
ENTRYPOINT ["picoclaw"]
|
||||||
CMD ["gateway"]
|
CMD ["gateway"]
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue