网站无法从浏览器访问 - docker 问题

我尝试安装 Forest Admin,但它需要 docker-compose

由于我没有安装它,于是我进行了安装:

sudo apt install docker-compose

但当我尝试运行时,出现了错误:

docker-compose up
ERROR: Couldn't connect to Docker daemon at http+docker://localhost - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

我尝试了几种方法,其中一种建议是重启 Docker:

sudo systemctl restart docker
Failed to restart docker.service: Unit docker.service is masked.

于是我取消屏蔽并重新构建,但随后无法访问应用:

sudo systemctl unmask docker
Removed /etc/systemd/system/docker.service.

sudo systemctl restart docker
# 无错误

我已经成功重新构建镜像,并且构建过程没有报错:

sudo /var/discourse/launcher rebuild app

但当我访问该 URL 时,却无法访问。

出于绝望,我还尝试了更新 Docker 并多次重新构建镜像,但都没有成功:

wget -qO- https://get.docker.com/ | sh

sudo /var/discourse/launcher rebuild app

我已经没有其他主意了。是否还有其他可以尝试的方法?

我想避免从备份恢复,因为那样会丢失一些数据。但如果这是唯一的选择,最佳做法是什么?

  • 恢复我最新的 Digital Ocean 备份
  • 恢复我最新的 Discourse 备份

我无法判断是 Docker 出了问题,还是 Forest Admin 导致 Discourse 无法运行。Forest Admin 到底要解决什么问题?

谢谢,Jay。我们先暂时忘掉 Forest Admin,我已经把它移除了。还有什么其他方法可以帮助我诊断问题吗?

我很有可能是把 Docker 搞坏了。如果这有关系的话,我之前使用的是 Docker 18.09.6(构建版本 481bc77),现在使用的是 20.10.2(构建版本 2291f61)。

好的。原来解决方案要简单得多:我只需要重启 nginx 就行了 :sweat_smile:

当我尝试执行时,出现了以下错误:

sudo service nginx restart
Job for nginx.service failed because the control process exited with error code.
See "systemctl status nginx.service" and "journalctl -xe" for details.

我在日志中没有发现任何明显的问题,但重启服务器确实解决了问题:

sudo shutdown -r now

现在网站运行正常了。

3 个赞

你不需要 nginx。我猜当你重启时,Discourse 在 nginx 重启期间抢占了 80 端口。而且你很幸运,重启后 Discourse 比 nginx 先启动。你应该卸载或禁用 nginx(除非你将其配置为反向代理,但使用 discourse-setup 无法实现此配置)。

1 个赞

谢谢,Jay。我配置了 nginx 作为反向代理,以便在重建时显示一个友好的页面。

2 个赞