
私のサーバーのリソースは限られているため、製品の 50 種類のバージョンをホストしたいと考えています。製品は非常に複雑で、残念ながらバグが多いため、すべてのバージョンにアクセスできるようにしておきたいと考えています。バグが報告された場合は、調査して、この問題が最初に発生した正確な時期を特定することができます。
しかし、各 Web サイトには 5 GB のデータと 1 GB のデータベースがあるため、すべての Web サイトを常に開いたままにしておくことはできません。サーバーは MySQL エラーを出し、メモリ オーバーフローのためにサーバーが応答しません。
これら 50 の異なる Web サイトをデフォルトで無効にしておく方法があるかどうか疑問に思っています。誰かが version-5-1.ourdomain.com にアクセスしようとすると、待機画面が表示され、起動時にリダイレクトされます。
また、Web サイトが 30 分以上アクセスされなかった場合は、その Web サイトを閉じてリソースを解放します。
答え1
もっと良い方法があるかもしれませんが、ホスト上のリバース プロキシと systemd ソケット アクティベーションを組み合わせて使用できるはずです。ソケットにリクエストが到着すると、systemd はコンテナーを起動してリクエストを転送します (コンテナーが起動してリクエストを受信するまでブロックされます)。次に、ログ ファイルを監視する何かを用意し、たとえば 5 分間アクセス ログに何も表示されない場合は、コンテナーを停止します。
答え2
私も同じ問題を抱えていました (オンデマンドで Web サーバーを起動したい... 同じホストで 50 個の異なるコピーを実行したくない)。既存の回答は完全に正しいソリューションを提供しますが、セットアップにはまだ多少の手間が残っています。また、systemd との相性が良くないコンテナネイティブ環境に簡単に展開できるものも必要でした。
この目的のために、私は現在本番環境で実行している次のプロジェクトを作成しました。https://github.com/radian-software/sleeping-beauty
完璧ではありませんが、ユースケースに役立ったり、適合するように調整できる可能性があります。