启动用户空间代理时出错: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)。我猜你只是编辑了文件,然后重启了已经配置好端口的容器。