Les miniatures ne sont pas récupérées

Je migre une communauté vieille de 15 ans vers Discourse, et nous avons décidé de ne pas migrer les cent mille publications, mais uniquement celles qui ont une valeur durable.

Sur l’ancien forum, les images sont enregistrées sous la forme https://static.xxx/uploads/xxx.jpg, et nous maintiendrons ce serveur en ligne après la migration.

Lors du déplacement de publications contenant des images, Discourse ne parvient pas à récupérer et à générer les miniatures, que je place ou non les images entre parenthèses. Cela fonctionne pendant la session en cours, mais lorsque je force le rechargement de la page ou qu’un autre utilisateur consulte la publication, nous voyons l’icône d’image brisée :

L’icône pointe directement vers l’image sur le serveur statique, qui fonctionne correctement. Cependant, des miniatures seraient ‘bienvenues’.

La seule chose qui me vient à l’esprit est un problème de pare-feu : les deux serveurs sont dans un espace d’adresses IP privées, et le pare-feu empêche un serveur interne d’accéder à un autre via une adresse IP externe. Je pense avoir configuré cela correctement dans le fichier /etc/hosts de l’hôte, mais je ne suis PAS un expert de Docker. Lorsque je ping le serveur d’images statique, j’obtiens la bonne adresse IP interne depuis l’invite de commande standard. (note à moi-même : entrer dans le conteneur et tester depuis là)

Y a-t-il autre chose que je dois faire pour forcer static.xx à utiliser l’adresse IP interne ? Les images externes, lorsqu’elles sont entourées de parenthèses, fonctionnent comme prévu avec la boîte légère.

Vous pourriez le faire communiquer avec un serveur DNS interne ? Cela dépend de votre topologie de couche 3, mais cela permettrait de stopper tout le trafic de bouclage.

Lorsque je ping le serveur d’actifs, j’obtiens l’adresse IP interne. Docker utilise-t-il un fichier hôte alternatif ?

Utilisez ./launcher enter app pour le savoir.

Ah, c’est le problème. Cela se résout vers l’adresse IP externe.
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

Ajouté, et… succès !

Modifier le fichier hosts dans le conteneur ne sera pas conservé entre les reconstructions. Il vaut mieux dépanner votre chaîne DNS plutôt que de bricoler la solution.

C’est un problème… bien que, une fois le fichier importé dans Discourse, l’original ne soit plus référencé, n’est-ce pas ?