|
1 | 1 | #!/bin/sh |
2 | 2 | set -e |
3 | 3 |
|
4 | | -# Dev entrypoint: PocketBase (API) + Astro dev server + Caddy (HTTPS + routing) |
| 4 | +# Dev entrypoint: PocketBase (API) + Theme Host (SSR frontend) + Caddy (HTTPS + routing) |
5 | 5 | # |
6 | 6 | # Caddy boots with bootstrap.json, then pb's OnBootstrap hook calls LoadConfig |
7 | 7 | # via admin API to inject full routes. Entrypoint is PID 1, Caddy runs in background. |
@@ -41,8 +41,8 @@ wait_for() { |
41 | 41 | cleanup() { |
42 | 42 | echo "[vanblog] shutting down..." |
43 | 43 | kill "$MONITOR_PID" 2>/dev/null || true |
44 | | - kill $PB_PID $ASTRO_PID $CADDY_PID 2>/dev/null || true |
45 | | - wait $PB_PID $ASTRO_PID $CADDY_PID 2>/dev/null || true |
| 44 | + kill $PB_PID $THEME_HOST_PID $CADDY_PID 2>/dev/null || true |
| 45 | + wait $PB_PID $THEME_HOST_PID $CADDY_PID 2>/dev/null || true |
46 | 46 | } |
47 | 47 | trap cleanup EXIT INT TERM |
48 | 48 |
|
|
90 | 90 | chmod 600 /etc/vanblog/agent.env |
91 | 91 | echo "[vanblog] agent.env written to /etc/vanblog/agent.env (see AGENTS.md §环境)" |
92 | 92 |
|
93 | | -# 4. Start Astro dev server (HMR) |
94 | | -echo "[vanblog] starting Astro dev server..." |
95 | | -cd /workspace |
96 | | - pnpm --filter vanblog-app dev -- --host 127.0.0.1 --port 4321 & |
97 | | -ASTRO_PID=$! |
98 | | -wait_for "http://127.0.0.1:4321/" "Astro SSR" 30 || exit 1 |
| 93 | +# 4. Start Theme Host (loads active theme's SSR handler, routes /admin to app) |
| 94 | +DEFAULT_THEME=$(cat /etc/vanblog/default-theme 2>/dev/null || echo "vanblog") |
| 95 | +echo "[vanblog] starting theme host (default theme: ${DEFAULT_THEME})" |
| 96 | +VANBLOG_THEMES_DIR=/var/lib/vanblog/themes \ |
| 97 | +VANBLOG_DEFAULT_THEME=${DEFAULT_THEME} \ |
| 98 | +VANBLOG_ADMIN_DIST_DIR=/build/app/dist \ |
| 99 | +PB_URL=http://127.0.0.1:8090 \ |
| 100 | + node /workspace/app/src/theme-host/index.mjs & |
| 101 | +THEME_HOST_PID=$! |
| 102 | +wait_for "http://127.0.0.1:4321/__theme_host_health" "Theme Host" 30 || exit 1 |
99 | 103 |
|
100 | 104 | # 5. Background monitor: if any child crashes, kill the container |
101 | 105 | monitor_children() { |
102 | 106 | while true; do |
103 | 107 | if ! kill -0 $CADDY_PID 2>/dev/null; then echo "[vanblog] FATAL: Caddy died"; exit 1; fi |
104 | 108 | if ! kill -0 $PB_PID 2>/dev/null; then echo "[vanblog] FATAL: PocketBase died"; exit 1; fi |
105 | | - if ! kill -0 $ASTRO_PID 2>/dev/null; then echo "[vanblog] FATAL: Astro died"; exit 1; fi |
| 109 | + if ! kill -0 $THEME_HOST_PID 2>/dev/null; then echo "[vanblog] FATAL: Theme Host died"; exit 1; fi |
106 | 110 | sleep 5 |
107 | 111 | done |
108 | 112 | } |
|
0 commit comments