15 年前に設立されたコミュニティを Discourse へ移行しており、10 万件以上の投稿をすべて移行するのではなく、永続的な価値のある投稿のみを選択して移行することにしました。
旧フォーラムでは、画像は https://static.xxx/uploads/xxx.jpg の形式で保存されており、移行後もこのサーバーを稼働させたままにします。
画像を含む投稿を移行する際、画像を () で囲むかどうかに関わらず、サムネイルが作成されません。現在のセッションでは正常に表示されますが、ページを強制的に再読み込みしたり、他のユーザーが閲覧したりすると、壊れた画像アイコンが表示されてしまいます。
このアイコンは静的サーバー上の画像に直接リンクしており、サーバー自体は正常に動作しています。ただし、サムネイルが表示されるとより良いでしょう。
考えられるのはファイアウォールの問題です。両方のサーバーはプライベート IP スペース内にあり、ファイアウォールが内部サーバーからの外部 IP 経由のアクセスを遮断しています。ホストの /etc/hosts ファイルでこれを正しく設定したつもりですが、Docker の専門家ではありません。通常のコマンドプロンプトから静的画像サーバーに ping を送ると、正しい内部 IP アドレスが返ってきます(メモ:コンテナに入り、そこでテストする)。
static.xx を内部 IP に強制するために、他に何か設定が必要でしょうか?() で囲まれた外部画像は、ライトボックスと共に期待通りに動作しています。
Stephen
(Stephen)
2020 年 2 月 4 日午後 3:44
2
内部 DNS サーバーと通信させることは可能ですか?レイヤー 3 のトポロジーによりますが、それによりすべてのループバック通信を停止できます。
アセットサーバーに ping を送信すると、内部 IP が返されます。Docker は代替のホストファイルを使用していますか?
Stephen
(Stephen)
2020 年 2 月 4 日午後 4:21
4
./launcher enter app を使用して確認してください。
Stephen:
./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
追加して…成功しました!
Stephen
(Stephen)
2020 年 2 月 4 日午後 4:30
6
コンテナ内の hosts ファイルを変更しても、再ビルド間で保持されません。DNS チェーンの問題を修正する方が、無理やり対処するよりも良いです。
それは問題ですね…ただし、一度ファイルを Discourse に取り込んだら、元ファイルは参照されなくなりますよね?