| 1 | #!/bin/sh |
| 2 | # Build and run grove on grove.host. Run from the project root: deploy/deploy.sh |
| 3 | # The server's store is /opt/grove2/data; it's never overwritten here. |
| 4 | set -eu |
| 5 | HOST=${GROVE_HOST:-root@grove.host} |
| 6 | |
| 7 | rsync -a --delete --exclude target --exclude .grove ./ "$HOST:/opt/grove2/src/" |
| 8 | ssh "$HOST" sh -eu <<'REMOTE' |
| 9 | cd /opt/grove2/src |
| 10 | docker build -q -t grove2 -f deploy/Dockerfile . >/dev/null |
| 11 | mkdir -p /opt/grove2/data |
| 12 | docker rm -f grove2 >/dev/null 2>&1 || true |
| 13 | docker run -d --name grove2 --restart unless-stopped --network grove_default -v /opt/grove2/data:/data grove2 >/dev/null |
| 14 | cp deploy/grove.caddy /opt/grove/sites/grove.caddy |
| 15 | mkdir -p /opt/grove/sites/grove2 |
| 16 | cp deploy/grove.routes /opt/grove/sites/grove2/grove.routes |
| 17 | docker exec grove-caddy-1 caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile |
| 18 | sleep 1 |
| 19 | docker exec grove2 wget -qO- http://127.0.0.1:4800/api/health |
| 20 | echo |
| 21 | REMOTE |