ADR-011: статика игры вынесена из куба на nginx (LXC 152 game-web), версии каталогами
- корень smart-updown.binom.pw -> nginx на Proxmox (LXC 152, 192.168.76.152) - /api,/ws -> куб (router PathPrefix на внешнем Traefik VDS), куб не менялся - версионирование: /opt/game/releases/<N>/, активная = симлинк /opt/game/current - tools/proxmox-nginx: unpack-release.sh, publish-release.sh, game.nginx.conf, smart-updown.traefik.yaml, README - приёмка живьём: корень 200 nginx/1.24.0 (Ubuntu), /27/ /28/ 200, /api/state 200 JSON, /api/ws цена, autoclose-check 9/9 - питфоллы: OCI-manifest в skopeo dir-дампе, слэш в конце версии, /solana-rpc мимо PathPrefix /api
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
# Распаковка образа игры из dir-дампа skopeo в версионированный каталог nginx.
|
||||
# Использование: unpack-release.sh <тег> <dir-дамп образа>
|
||||
set -euo pipefail
|
||||
|
||||
TAG="$1"
|
||||
IMG="$2"
|
||||
DEST="/opt/game/releases/${TAG}"
|
||||
|
||||
[ -d "$IMG" ] || { echo "нет дампа $IMG"; exit 1; }
|
||||
|
||||
rm -rf /tmp/rootfs-${TAG}
|
||||
mkdir -p /tmp/rootfs-${TAG}
|
||||
|
||||
cd "$IMG"
|
||||
# слои из manifest.json в правильном порядке
|
||||
/usr/bin/python3 - <<'PY' > /tmp/layers-${TAG}.txt
|
||||
import json
|
||||
m = json.load(open('manifest.json'))
|
||||
for l in m['layers']:
|
||||
print(l['digest'].split(':', 1)[1])
|
||||
PY
|
||||
|
||||
while read -r layer; do
|
||||
[ -z "$layer" ] && continue
|
||||
case "$layer" in
|
||||
*tar.gz|*tgz) tar -xzf "$layer" -C /tmp/rootfs-${TAG} ;;
|
||||
*tar.zst) tar --zstd -xf "$layer" -C /tmp/rootfs-${TAG} ;;
|
||||
*) tar -xf "$layer" -C /tmp/rootfs-${TAG} ;;
|
||||
esac
|
||||
done < /tmp/layers-${TAG}.txt
|
||||
|
||||
SRC="/tmp/rootfs-${TAG}/usr/share/nginx/html"
|
||||
[ -d "$SRC" ] || { echo "нет $SRC в образе"; ls /tmp/rootfs-${TAG}/usr/share/nginx 2>/dev/null; exit 1; }
|
||||
|
||||
mkdir -p "$DEST"
|
||||
cp -a "$SRC/." "$DEST/"
|
||||
chmod -R a+rX /opt/game/releases
|
||||
rm -rf /tmp/rootfs-${TAG} /tmp/layers-${TAG}.txt
|
||||
|
||||
echo "=== релиз ${TAG} разложен в ${DEST} ==="
|
||||
ls -la "$DEST"
|
||||
du -sh "$DEST"
|
||||
Reference in New Issue
Block a user