deploy: worker image COPY simplification, web-dist mount, alarm build flow

This commit is contained in:
Raphael Westphal
2026-08-18 14:59:25 +02:00
parent 4949b40f1c
commit bcd976a8ac
3 changed files with 23 additions and 14 deletions
+17 -8
View File
@@ -1,5 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Deploy lvmh to alarm over ssh (tailnet). Source is rsynced; compose builds there. # Deploy lvmh to alarm over ssh (tailnet). rsync source, build images there,
# compose up. Requires .env on the remote (created on first run).
set -euo pipefail set -euo pipefail
REMOTE="${1:-alarm}" REMOTE="${1:-alarm}"
@@ -7,17 +8,25 @@ REMOTE_DIR="${2:-/zdata/root/dockerFiles/lvmh}"
if ! ssh "$REMOTE" "test -f $REMOTE_DIR/.env" 2>/dev/null; then if ! ssh "$REMOTE" "test -f $REMOTE_DIR/.env" 2>/dev/null; then
echo "ERROR: $REMOTE:$REMOTE_DIR/.env missing. Create it first (see .env.example):" echo "ERROR: $REMOTE:$REMOTE_DIR/.env missing. Create it first (see .env.example):"
echo " ssh $REMOTE 'mkdir -p $REMOTE_DIR && cat > $REMOTE_DIR/.env' <<EOF echo " ssh $REMOTE 'mkdir -p $REMOTE_DIR && nano $REMOTE_DIR/.env'"
LVMH_TOKEN=... echo " # LVMH_TOKEN=<random>, ZAI_RENAUD_API_KEY=<key>"
ZAI_RENAUD_API_KEY=...
EOF"
exit 1 exit 1
fi fi
# web/dist must exist (daemon serves it)
if [ ! -f web/dist/index.html ]; then
echo "building web/dist first..."
(cd web && bun install && bun run build)
fi
rsync -az --delete \ rsync -az --delete \
--exclude .git --exclude node_modules --exclude web/dist \ --exclude .git --exclude node_modules --exclude web/node_modules \
--exclude .env --exclude .scratch --exclude .pi \ --exclude .env --exclude .scratch --exclude .pi --exclude coverage \
./ "$REMOTE:$REMOTE_DIR/" ./ "$REMOTE:$REMOTE_DIR/"
ssh "$REMOTE" "cd $REMOTE_DIR && docker compose build lvmh && docker compose up -d && docker compose ps" echo "building daemon image + worker image on $REMOTE..."
ssh "$REMOTE" "cd $REMOTE_DIR \
&& docker build -q -f daemon/Dockerfile -t lvmh-daemon:latest . \
&& docker build -q -f docker/worker.Dockerfile -t lvmh-worker:latest . \
&& docker compose up -d && docker compose ps"
echo "Deployed: http://$REMOTE:8686" echo "Deployed: http://$REMOTE:8686"
+1
View File
@@ -20,6 +20,7 @@ services:
- lvmh-data:/data - lvmh-data:/data
- .:/app/build:ro # repo checkout (rsynced by deploy.sh) - .:/app/build:ro # repo checkout (rsynced by deploy.sh)
# daemon rebuilds lvmh-worker from /app/build/docker/worker.Dockerfile # daemon rebuilds lvmh-worker from /app/build/docker/worker.Dockerfile
- ./web/dist:/app/web-dist:ro # web UI served from repo checkout
networks: networks:
lvmh-net: lvmh-net:
aliases: [lvmh] aliases: [lvmh]
+2 -3
View File
@@ -11,9 +11,8 @@ RUN apt-get update \
RUN npm install -g --ignore-scripts @earendil-works/pi-coding-agent RUN npm install -g --ignore-scripts @earendil-works/pi-coding-agent
# lvmh plugin: dial-home mirror (built from plugin/lvmh-agent.ts at image build) # lvmh plugin: dial-home mirror (built from plugin/ at repo root)
ARG LVMH_PLUGIN=./plugin-placeholder COPY plugin/lvmh-agent.ts /root/.pi/agent/extensions/lvmh-agent.ts
COPY ${LVMH_PLUGIN} /root/.pi/agent/extensions/lvmh-agent.ts
COPY docker/worker-models.json /root/.pi/agent/models.json COPY docker/worker-models.json /root/.pi/agent/models.json
COPY docker/bridge /bridge COPY docker/bridge /bridge