设置 docker 宕机时的回退页面

设置 docker 宕机时的回退页面

我的 Web 应用程序位于 docker-containers 中,并开始使用docker-compose up。设置将其公开在端口 80 上,其余部分在容器内部进行,这要感谢 traefik 等。

如果我在安装了 apache 等本地 Web 服务器的机器上启动它,它会显示“端口 80 已在使用中”并拒绝启动,这很明显。必须停止服务器。我想要一个后备/错误页面,当容器未运行时(由于错误或更新期间或其他原因),它会显示“正在建设中”或其他内容。

因此,为了更新,我必须

  1. docker-compose 停止/关闭
  2. 启动 apache
  3. 做我的事情
  4. 停止 Apache
  5. docker-compose up

现在我想知道是否可以简化这一点:是否有可能以非阻塞方式提供 fallback.html,或者换句话说:是否可以设置 apache 或使用另一个 web 服务器不阻塞端口 80 并允许另一个应用程序(在本例中是 docker,但对于每个为自己服务的应用程序来说,问题都是相同的)使用它,但在其他应用程序没有使用它时为它提供服务?

答案1

  • 在不同的端口上公开你的应用程序
  • 在主机上将 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 脚本在计划停机期间显示的消息与计划停机之外显示的消息不同。

相关内容