From 26a33b5b336975a943b27e473deb80ad364e3cc9 Mon Sep 17 00:00:00 2001 From: Guoguo Date: Thu, 26 Feb 2026 04:46:49 -0800 Subject: [PATCH] feat(docker): add entrypoint script to goreleaser Dockerfile - entrypoint.sh: on first run (config and workspace both absent) runs picoclaw onboard then exits for the user to configure; subsequent starts exec picoclaw gateway directly - Dockerfile.goreleaser: copy and use entrypoint.sh, run as root - .goreleaser.yaml: update dockerfile path, add entrypoint.sh to extra_files so it is included in the docker build context Co-Authored-By: Claude Sonnet 4.6 --- .goreleaser.yaml | 4 +++- .../Dockerfile.goreleaser | 6 ++++-- docker/entrypoint.sh | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 3 deletions(-) rename Dockerfile.goreleaser => docker/Dockerfile.goreleaser (58%) create mode 100644 docker/entrypoint.sh diff --git a/.goreleaser.yaml b/.goreleaser.yaml index af26509e6..49d230506 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -39,7 +39,9 @@ builds: dockers_v2: - id: picoclaw - dockerfile: Dockerfile.goreleaser + dockerfile: docker/Dockerfile.goreleaser + extra_files: + - docker/entrypoint.sh ids: - picoclaw images: diff --git a/Dockerfile.goreleaser b/docker/Dockerfile.goreleaser similarity index 58% rename from Dockerfile.goreleaser rename to docker/Dockerfile.goreleaser index 0cdc8c6bd..68a02aae8 100644 --- a/Dockerfile.goreleaser +++ b/docker/Dockerfile.goreleaser @@ -5,6 +5,8 @@ ARG TARGETPLATFORM RUN apk add --no-cache ca-certificates tzdata COPY $TARGETPLATFORM/picoclaw /usr/local/bin/picoclaw +COPY docker/entrypoint.sh /entrypoint.sh -ENTRYPOINT ["picoclaw"] -CMD ["gateway"] +RUN chmod +x /entrypoint.sh + +ENTRYPOINT ["/entrypoint.sh"] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh new file mode 100644 index 000000000..b6fc724b5 --- /dev/null +++ b/docker/entrypoint.sh @@ -0,0 +1,15 @@ +#!/bin/sh +set -e + +# First-run: neither config nor workspace exists. +# If config.json is already mounted but workspace is missing we skip onboard to +# avoid the interactive "Overwrite? (y/n)" prompt hanging in a non-TTY container. +if [ ! -d "${HOME}/.picoclaw/workspace" ] && [ ! -f "${HOME}/.picoclaw/config.json" ]; then + picoclaw onboard + echo "" + echo "First-run setup complete." + echo "Edit ${HOME}/.picoclaw/config.json (add your API key, etc.) then restart the container." + exit 0 +fi + +exec picoclaw gateway "$@"