缩略图未加载

我正在将一个拥有 15 年历史的社区迁移到 Discourse,我们决定不迁移超过十万篇帖子,而是只迁移那些具有持久价值的精选内容。

在旧论坛中,图片保存为 https://static.xxx/uploads/xxx.jpg 格式,迁移后我们将继续保留该服务器运行。

在迁移包含图片的帖子时,无论是否将图片用圆括号 () 包裹,系统都无法抓取并生成缩略图。在当前的会话中确实可以正常显示,但一旦强制刷新页面,或其他用户查看时,就会显示破损图片图标:

该图标直接链接到静态服务器上的图片,而该链接本身是正常工作的。不过,如果能生成缩略图就更好了。

我能想到的唯一可能是防火墙问题——两台服务器都位于私有 IP 地址空间内,而防火墙阻止了内部服务器通过外部 IP 访问另一台服务器。我_认为_我已经在宿主机的 /etc/hosts 文件中正确设置了相关配置,但我并不是 Docker 专家。当我从常规命令行 ping 静态图片服务器时,能获取到正确的内部 IP 地址。(提醒自己:进入容器内部进行测试)

是否还有其他需要配置的地方,以强制将 static.xx 解析为内部 IP?对于用圆括号 () 包裹的外部图片,其灯箱(lightbox)功能目前按预期正常工作。

您可以让它与内部 DNS 服务器通信吗?这取决于您的第 3 层拓扑结构,但这样做可以阻止所有回环通信。

当我 ping 资产服务器时,我得到了内网 IP。Docker 是否在使用一个替代的主机文件?

使用 ./launcher enter app 来查找。

啊哈,问题就在这里。它解析到了外部 IP。
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

已添加,然后……成功!

在容器中修改 hosts 文件在重建后不会保留。最好排查你的 DNS 链路,而不是临时凑合。

这确实是个问题……不过一旦文件被导入 Discourse,原始文件就不再被引用了,对吧?