启动用户空间代理时出错:listen tcp4 0.0.0.0:443:bind:地址已在使用中

好吧,我想试试 Discourse,所以我正在通过 Docker 安装它,但遇到了这个错误。实际上,通过搜索我发现很多人都会遇到这个错误,但我不知道如何解决。

启动现有容器

    + /usr/bin/docker start app

    守护进程响应错误:端点 app (7336c875bdf9e3f18f08ca0af0a5aad10181ba37508f92c68f87a75637c56583) 的外部连接编程因驱动程序失败而失败:启动用户态代理时出错:监听 tcp4 0.0.0.0:443:绑定:地址已被占用

    错误:启动容器失败:app

我已经在 /opt/discourse/containers/app.yml 中设置了以下内容:
expose:

  • “8880:80” # http
  • “8443:443” # https

这是一台 Web 服务器,上面运行着一个使用 HTTPS 的网站,所以端口 443 确实已被占用。但是,如果我在 app.yml 中将 443 端口映射到 8443,为什么我仍然会收到这个错误?

您应查看 Discourse 官方标准安装 和 如何在已有 Apache 站点的服务器上设置 Discourse。

根据您提供的路径,您可能还需要查看 Bitnami 安装故障排除。

我看过那份文档,但修改 app.yml 不应该会影响所使用的端口吗?还是说它会被忽略?Discourse 是我遇到的第一个带有某种“硬编码”端口且无法更改的应用。

我真的很不想在客户和我的网站之间再插入另一层软件,而我的网站目前运行良好。我宁愿在 Apache 中将一个子域名映射到 Discourse。

另外,如果我再遇到另一个类似的应用,被强制运行在 443 端口,该怎么办?

是的,但你必须执行 ./launcher rebuild app(或者可能是 ./launcher destroy app; ./launcher start app)。我猜你只是编辑了文件,然后重启了已经配置好端口的容器。