Tento problém je veľmi zvláštny. Stále úplne nerozumiem, čo presne sa stalo, ale môj mozog mi hovorí, že nejako docker-compose zmenil automatické generovanie názvov inštancií z používania podčiarkovníkov na pomlčky.

Nechcem to teraz ísť replikovať na živom serveri, ale podarilo sa mi dohľadať najrelevantnejšiu chybovú správu z histórie vyhľadávania:

ActiveRecord::NoDatabaseError: could not translate host name "mastodon_db_1" to address: Name or service not known

Čo to znamená?

Ako som sa sem dostal #

Naozaj neviem. Robil som nejakú údržbu servera okolo docker služieb a potom začali prichádzať chyby, dokonca aj z tých, ktorých som sa nedotkol. Teraz, keď sú všetky problémy vyriešené, cítim sa čudne, pretože veci fungujú, ale zjavne neviem presne prečo.

Na druhej strane, nikto nemôže vedieť všetko a bez odborného vzdelania som odkázaný na tinkrovanie a hacknutie sa cez docker svet. A znova, lekcie sa učia, kým veci začnú fungovať. Pozitívne je, že sa mi podarilo dostať všetko späť do normálu. Smutné je, že stále neviem, čo do čerta sa stalo.

Sledovanie problému #

Zjavná časť bola, že inštancia Mastodonu by sa neotvorila na webe s chybovým kódom HTTP 5xx. V docker logu boli rôzne opakujúce sa chyby, ale všetky vychádzali z vyššie uvedenej chybovej správy. No nemal som spôsob, ako vedieť, ktorá jedna chybová správa z toho múra textu je vinníkom.

Zjavná časť bola, že inštancia Mastodonu by sa neotvorila na webe s chybovým kódom HTTP 5xx. V docker logu boli rôzne opakujúce sa chyby, ale všetky vychádzali z vyššie uvedenej chybovej správy. No nemal som spôsob, ako vedieť, ktorá jedna chybová správa z toho múra textu je vinníkom.

Riešenie #

Našťastie som si tú chybovú správu všimol a to, čo hovorí, je vlastne dosť jasné. Neexistuje žiadny hostiteľ s názvom mastodon_db_1, ku ktorému by sa bolo možné pripojiť. Správne. Všetky ostatné chybové správy tam pravdepodobne boli preto, lebo databáza nie je dostupná. Vedel som, že služby sú definované v súbore docker-compose.yml. A rovnako dobre som vedel, že to pár hodín predtým fungovalo. A vedel som, že sa tohto priečinka vôbec nedotýkam, takže sa niečo iné zmenilo.

Zvlášť zarážajúce bolo, že služby docker-compose boli spustené odlišne — vo forme mastodon-db-1. Ripgrepovanie po repozitári ma nakoniec priviedlo k súboru .env.production, ktorý obsahoval hodnotu mastodon_db_1. Riešenie?

- DB_HOST=mastodon_db_1
+ DB_HOST=mastodon-db-1

- REDIS_HOST=mastodon_redis_1
+ REDIS_HOST=mastodon-redis-1

- ES_HOST=mastodon_es_1
+ ES_HOST=mastodon-es-1

Podobné zmeny bolo potrebné urobiť aj v iných projektoch, takže verím, že niekde v docker ekosystéme musela byť nejaká aktualizácia, ale zatiaľ sa mi ju nepodarilo presne identifikovať. Vyhľadávanie neukazuje žiadnu breaking zmenu za posledný mesiac alebo dva. Možno nehľadám dostatočne usilovne…