picoclaw/docker/entrypoint.sh

22 lines
836 B
Bash
Raw Normal View History

chore(docker): reorganize docker files and add first-run entrypoint (#812) * chore(docker): move Dockerfile into docker/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * 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 <noreply@anthropic.com> * chore(docker): update docker-compose to use pre-built image and bind mount - Use docker.io/sipeed/picoclaw:latest instead of building locally - Replace named volume with bind mount ./data:/root/.picoclaw - Move docker-compose.yml into docker/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: update Docker Compose section to reflect new docker/ layout - Use docker compose -f docker/docker-compose.yml for all commands - Update setup flow: first run generates docker/data/config.json, container exits, user edits config, then restarts - Replace "Rebuild" section with "Update" (docker pull) since the compose file now uses the pre-built sipeed/picoclaw image - Apply same changes to README.zh.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(docker): use restart: on-failure to prevent restart after first-run setup unless-stopped restarts the container regardless of exit code, causing an infinite loop when entrypoint exits 0 after the initial onboard. on-failure only restarts on non-zero exit (i.e. crashes), so the container stays stopped after setup until the user restarts it manually. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: sync Docker Compose section across all language READMEs Apply the same updates as the English/Chinese READMEs: - Use docker compose -f docker/docker-compose.yml for all commands - Update setup flow to first-run auto-config pattern - Replace build/rebuild section with update via docker pull - Affected: README.fr.md, README.ja.md, README.pt-br.md, README.vi.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 02:10:17 +00:00
#!/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
# Remove stale PID file from a previous container run.
# After docker kill / OOM / crash the PID file may linger on the bind-mounted
# volume and block the next gateway start (the recorded PID could collide with
# an unrelated process inside the new container).
rm -f "${HOME}/.picoclaw/.picoclaw.pid"
chore(docker): reorganize docker files and add first-run entrypoint (#812) * chore(docker): move Dockerfile into docker/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * 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 <noreply@anthropic.com> * chore(docker): update docker-compose to use pre-built image and bind mount - Use docker.io/sipeed/picoclaw:latest instead of building locally - Replace named volume with bind mount ./data:/root/.picoclaw - Move docker-compose.yml into docker/ directory Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: update Docker Compose section to reflect new docker/ layout - Use docker compose -f docker/docker-compose.yml for all commands - Update setup flow: first run generates docker/data/config.json, container exits, user edits config, then restarts - Replace "Rebuild" section with "Update" (docker pull) since the compose file now uses the pre-built sipeed/picoclaw image - Apply same changes to README.zh.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(docker): use restart: on-failure to prevent restart after first-run setup unless-stopped restarts the container regardless of exit code, causing an infinite loop when entrypoint exits 0 after the initial onboard. on-failure only restarts on non-zero exit (i.e. crashes), so the container stays stopped after setup until the user restarts it manually. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * docs: sync Docker Compose section across all language READMEs Apply the same updates as the English/Chinese READMEs: - Use docker compose -f docker/docker-compose.yml for all commands - Update setup flow to first-run auto-config pattern - Replace build/rebuild section with update via docker pull - Affected: README.fr.md, README.ja.md, README.pt-br.md, README.vi.md Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-02-27 02:10:17 +00:00
exec picoclaw gateway "$@"