#!/bin/sh # nginx imajı açılışta /docker-entrypoint.d/*.sh dosyalarını çalıştırır. # # İmajın hash'li chunk'larını (`dist/assets`) arşive ekler ve arşivi /srv/assets volume'unda # biriktirir: var olan dosya ezilmez (hash'li ad = aynı içerik), yeni dosya kopyalanır. Böylece # deploy'dan önce açılmış sekmeler kendi sürümlerinin chunk'larını bulmaya devam eder. # # Temizlik: imajda artık bulunmayan ve 30 günden eski dosyalar silinir. Çalışan sürümün dosyası # ne kadar eski olursa olsun silinmez (kontrol imajdaki varlığa göredir, tarihe göre değil). set -eu SRC=/usr/share/nginx/html/assets DST=/srv/assets KEEP_DAYS=30 mkdir -p "$DST" cd "$SRC" find . -type f | while IFS= read -r file; do [ -e "$DST/$file" ] && continue mkdir -p "$DST/$(dirname "$file")" cp "$file" "$DST/$file" done cd "$DST" find . -type f -mtime +"$KEEP_DAYS" | while IFS= read -r file; do [ -e "$SRC/$file" ] || rm -f "$file" done find . -type d -empty -delete 2>/dev/null || true echo "[assets] arşiv: $(find "$DST" -type f | wc -l) dosya"