Jak řešíte generování cache při/po deploy?
- Namespace
- Člen | 81
Ahoj, mohu se zeptat jak řešíte generování cache po deploy? Máme poměrně velkou aplikaci, kde generování cache trvá delší dobu. Bohužel k serveru je přístup jen pomocí ftp, tak i deploy běží přes něj.
V současnosti se složka s cache přejmenuje na cache_random_string a vytvoří se nová. A to nám aktuálně způsobuje problémy. Když se generuje cache, tak aplikace „zamrzne“ a čeká na doběhnutí.
Přesun na server s ssh zatím bohužel není možný. Tak kdybyste někdo měl nějaké ozkoušené řešení, tak bych byl vděčný. Deploy nám běží přes GitHub Action
- Kamil Valenta
- Člen | 820
Obecně bych řekl, že první krok deploy procesu je odstavit index.php na
nějaký maintenance.php, protože v průběhu nechceš ani requesty na
nekonzistentní skripty.
Generování cache pak řeší nějaký „after hook“, pokud není aplikace
schopná běžet bez již nagenerované cache, tak nezbývá, než maintenance
uvolnit až po doběhnutí toho generování. V tuto chvíli asi
nevymyslíš více.
My třeba máme dost „custom deploy“, kdy se vše vyloží bokem (produkce v tom čase jede na předchozí verzi), vyřeší se vše potřebné (cache, práva na FS…) a na poslední chvíli se produkce odstaví, překopíruje a zase obnoví. „Výpadek“ je pak jen v nižším řádu vteřin.
- DefenestrationPraha
- Člen | 127
V dockerovém modelu dělám to, že pro cache vytvořím speciální tmpfs v paměti:
tmpfs:
– /var/www/html/temp/cache:uid=999,gid=999,size=1G
Tím se dost výrazně zrychlí přístup k ní. Zároveň na naskočení docker containeru s aplikací navážu další mikroaplikaci, jejímž jediným smyslem je vyvolat wget na čelní stránku, čímž se velká část cache vygeneruje.