最近現実世界で忙しくてブログの調整ができていませんでしたが、昨夜寝る前に久しぶりに友人たちのブログを見てみようと思い、杜先生のブログを習慣的に開きました。そこで、何日も続けて
Cloudreveの導入チュートリアルが投稿されているのを見て、つい手を出してしまいました。
Cloudreveについては、まったくの他人ではなく、むしろ長年会っていない古い友人のような存在です。2018年に初めて触れましたが、サーバーの移行が頻繁だったため、データのバックアップが取れず、結局利用をやめてしまいました。当時、ほぼ199元のスポンサーエディションを購入しようとしていたのですが、昨夜ふと今の価格を見て、また200元損した気分になりました(結局買ってはいないのですが、すごく買いたくなってしまいました)。
ブログを回った直後から、すぐにいじり始めたくなったのは、以前1Panelのβ版でプロ版を購入しており、いくつかのサービスを1Pに移行していたため、ソフトウェアストアがとても便利で、数秒で簡単にデプロイできました。試しに使ってみると、相変わらずの味わい(濃厚なMDUI風味)でした。その後コードを確認したところ、以前のPHPからGolangに移行しており、おそらくパフォーマンスがかなり向上していると思われます。現時点ではまだ本格的に運用していません。
デプロイ後、「隠れた機能」を発見しました。これにより、Cloudreveを画像ホスティングサービスとしても利用できるのです。これで手元の蘭空が急に魅力を失いました。ネットディスクとしても使えるし、画像ホスティングとしても使えるなら、まさに一石二鳥です。最近はこの方向に移行するつもりです。
では、本題に入りましょう。
Dockerコンテナの性質上、ウェブサイトのアイコン(ico)を直接変更することができません。ネットで検索してみましたが、Dockerに関する方法は見つかりませんでした。そこで最初に思いついたのは、コンテナのデータボリュームをローカルにマウントする方法です。思わずリポジトリを確認し、フロントエンドがコンテナ内にバンドルされていると思い込んで、誤ってpublicディレクトリをマウントしましたが、反応がありませんでした。キャッシュの削除も試みましたが、結局解決せず、あまりに遅かったため、諦めてPCを閉じて寝てしまいました。
上記は一つの小さな落とし穴でした。以下に私がアイコンを変更した手順を紹介します。私は1Panelを使ってデプロイしたので、理論的にはすべてのDockerコンテナによるデプロイに適用可能です。
Dockerの編成ファイル(docker-compose.yml)を編集します。
最後の行にローカルマウントの設定を追加します。
ローカルの名前とパスは各自の環境に応じて設定してください

変更後に再起動すると、正常に開けなくなることに気づくでしょう。なぜなら、Cloudreveのコンテナはバイナリとしてパッケージ化されており、静的リソースファイルが含まれていないためです。コンテナ内に入り、以下のコマンドを実行して静的リソースを展開する必要があります。
静的リソースの展開:

その後、コンテナ内のローカルディレクトリに入り、アイコンを編集・置き換えます。

注意点として、コンテナ内にはデフォルトで静的リソースディレクトリが存在しないため、コンテナを再構築するたびに、リソースの展開を再度行い、その後で置き換えを行う必要があります。