31 lines
1.1 KiB
Bash
31 lines
1.1 KiB
Bash
#!/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"
|