Thumbnails werden nicht geladen

Ich migriere eine 15 Jahre alte Community zu Discourse und wir haben uns entschieden, die über 100.000 Beiträge nicht vollständig zu migrieren, sondern nur ausgewählte Beiträge von bleibendem Wert.

Auf dem alten Board werden Bilder als https://static.xxx/uploads/xxx.jpg gespeichert, und wir werden diesen Server auch nach der Migration aktiv halten.

Beim Verschieben von Beiträgen mit Bildern werden diese nicht heruntergeladen und es werden keine Vorschaubilder erstellt – egal, ob ich die Bilder in Klammern setze oder nicht. Das funktioniert zwar während der aktuellen Sitzung, aber sobald ich die Seite neu lade oder ein anderer Benutzer sie ansieht, erscheint das Symbol für ein defektes Bild:

Das Symbol verlinkt direkt auf das Bild auf dem statischen Server, was einwandfrei funktioniert. Aber Vorschaubilder wären „schön“.

Der einzige Gedanke, der mir dazu kommt, ist ein Firewall-Problem – beide Server befinden sich im privaten IP-Bereich, und die Firewall verhindert, dass ein interner Server über eine externe IP auf einen anderen zugreift. Ich glaube, ich habe dies korrekt in der Datei /etc/hosts des Hosts eingerichtet, bin aber KEIN Docker-Experte. Wenn ich den statischen Bildserver anpinge, erhalte ich aus der normalen Eingabeaufforderung heraus die korrekte interne IP-Adresse. (Notiz an mich selbst: in den Container gehen und von dort testen)

Muss ich noch etwas anderes tun, um sicherzustellen, dass static.xx als interne IP verwendet wird? Externe Bilder, die in () gesetzt sind, funktionieren mit der Lightbox wie erwartet.

Du könntest es mit einem internen DNS-Server sprechen lassen? Das hängt von deiner Layer-3-Topologie ab, aber das würde den gesamten Loopback-Verkehr stoppen.

Wenn ich den Asset-Server anpinge, erhalte ich die interne IP. Verwendet Docker eine alternative Host-Datei?

Benutze ./launcher enter app, um herauszufinden.

Aha, das ist das Problem. Es wird auf eine externe IP aufgelöst.
root@discourse-app:/var/www/discourse# cat /etc/hosts

127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2 discourse-app

Hinzugefügt, und… Erfolg!

Das Ändern der Hosts-Datei im Container bleibt bei Neubuilds nicht erhalten. Es ist besser, die DNS-Kette zu untersuchen, als eine Notlösung zu verwenden.

Das ist ein Problem… aber sobald die Datei in Discourse importiert wurde, wird auf das Original nicht mehr verwiesen, oder?