Linux

為 docker 關閉時設置備份頁面

  • May 5, 2021

我的 web 應用程序包含在 docker-containers 中,並且從docker-compose up. 該設置將其暴露在埠 80 上,其餘的發生在容器內,這要歸功於 traefik 等。

如果我在安裝了本地網路伺服器(如 apache)的機器上啟動它,它會顯示“埠 80 已在使用中”並拒絕啟動,這很清楚。必須停止伺服器。我想要一個備份/錯誤頁面,上面寫著“正在建設”或容器未執行時的任何內容(由於錯誤或更新期間或其他原因)。

因此,對於更新,我將不得不

  1. docker-compose 停止/停止
  2. 啟動阿帕奇
  3. 做我的事
  4. 停止阿帕奇
  5. 碼頭工人組成

現在我想知道我是否可以簡化這一點:是否有可能以非阻塞方式提供 fallback.html,或者換句話說:是否可以設置 apache 或使用另一個網路伺服器不阻塞埠 80 並允許另一個應用程序(在這種情況下是 docker,但對於每個為自己服務的應用程序,問題都是相同的)來使用它,但是當另一個應用程序沒有服務時提供它?

  • 在不同的埠上公開您的應用程序
  • 將主機上的 Apache 配置為反向代理
  • 使用ErrorDocument 指令顯示您的自定義資訊頁面

這是來自我用於這種情況的配置:

<VirtualHost *:443>
   ServerName host.example.com

   DocumentRoot /var/www/html
   <Directory />
           Options FollowSymLinks
           AllowOverride None
   </Directory>
   <Directory /var/www/html/>
           Options Indexes FollowSymLinks MultiViews
           AllowOverride None
           Order allow,deny
           allow from all
   </Directory>

   ErrorDocument 502 /error_503.php
   ErrorDocument 503 /error_503.php

   ProxyRequests Off
   ProxyPreserveHost On
   ProxyPass             /app/             http://localhost:9090/
   ProxyPassReverse      /app/             http://localhost:9090/

   # ... rest of the configuration
</VirtualHost>

PHP 腳本在計劃停機期間顯示的消息與在它之外顯示的消息不同。

引用自:https://serverfault.com/questions/1062604