设置中引导失败

Discourse 设置时出现以下错误:

FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && gem update bundler 失败,返回状态为 #<Process::Status: pid 297 exit 1>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
执行失败,参数如下:{"cd"=>"$home", "hook"=>"web", "cmd"=>["gem update bundler", "find $home ! -user discourse -exec chown discourse {} \\+"]}
d85fae83cd3f933238f0e21e6e562469400baf63643d9c6dcd138c739dfa0830
** 引导失败 ** 请向上滚动查看更早的错误信息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。

我已尝试过一些解决方案,但均未奏效。

1 个赞

你试过 Discourse Doctor 吗?

1 个赞
./discourse-doctor
FAILED
--------------------
Pups::ExecError: cd /var/www/discourse && gem update bundler 失败,返回状态 #<Process::Status: pid 298 exit 1>
失败位置:/pups/lib/pups/exec_command.rb:112:in `spawn'
执行失败,参数如下:{"cd"=>"$home", "hook"=>"web", "cmd"=>["gem update bundler", "find $home ! -user discourse -exec chown discourse {} \\+"]}
00e8acc18f87b395d0b4f8de4d859dad8c8824b148243fa8f0c6085e5b0982a4
** 引导失败 ** 请向上滚动查看之前的错误消息,可能不止一条。
./discourse-doctor 可能有助于诊断问题。
==================== 重建日志结束 ====================
应用重建失败。

正在检查您的域名 . . .

与 sosyal.dursuncanpoyraz.com.tr 的连接成功。
您可能需要移除任何非官方插件并重新构建。
正在尝试重启现有容器 . . . 

+ /usr/bin/docker run --shm-size=512m -d --restart=always -e LANG=en_US.UTF-8 -e RAILS_ENV=production -e UNICORN_WORKERS=4 -e UNICORN_SIDEKIQS=1 -e RUBY_GLOBAL_METHOD_CACHE_SIZE=131072 -e RUBY_GC_HEAP_GROWTH_MAX_SLOTS=40000 -e RUBY_GC_HEAP_INIT_SLOTS=400000 -e RUBY_GC_HEAP_OLDOBJECT_LIMIT_FACTOR=1.5 -e DISCOURSE_DB_SOCKET=/var/run/postgresql -e DISCOURSE_DB_HOST= -e DISCOURSE_DB_PORT= -e LETSENCRYPT_DIR=/shared/letsencrypt -e DISCOURSE_DEFAULT_LOCALE=en -e DISCOURSE_HOSTNAME=sosyal.dursuncanpoyraz.com.tr -e DISCOURSE_DEVELOPER_EMAILS=poyrazdursuncan@gmail.com -e DISCOURSE_SMTP_ADDRESS=smtp.gmail.com -e DISCOURSE_SMTP_PORT=587 -e DISCOURSE_SMTP_USER_NAME=poyrazdursuncan@gmail.com -e 'DISCOURSE_SMTP_PASSWORD=Poyraz!19681973' -e DISCOURSE_SMTP_ENABLE_START_TLS=true -e LETSENCRYPT_ACCOUNT_EMAIL= -h localhost-app -e DOCKER_HOST_IP=172.17.0.1 --name app -t -p 80:80 -p 443:443 -v /var/discourse/shared/standalone:/shared -v /var/discourse/shared/standalone/log/var-log:/var/log --mac-address 02:78:00:1c:c3:10 local_discourse/app /sbin/boot
无法在本地找到镜像 'local_discourse/app:latest'
docker: 守护进程错误响应:拉取 local_discourse/app 的访问被拒绝,仓库不存在或可能需要执行 'docker login':拒绝:请求的资源访问被拒绝。
请参阅 'docker run --help'。
容器重启失败。


==================== 插件 ====================
          - git clone https://github.com/discourse/docker_manager.git

未检测到任何非官方插件。

官方列表请参阅:https://github.com/discourse/discourse/blob/master/lib/plugin/metadata.rb

========================================
1 个赞

请在 FAILED 消息上方再补充几行。我假设这是全新安装?如果不是,您是否对 app.yml 文件进行了任何修改?

1 个赞

看起来 docker 无法拉取基础镜像。我遇到过这种情况,可能是因为我之前登录过 Docker Hub 但登录已过期?或者你触达了速率限制?

2 个赞

问题是否可能出在虚拟服务器的安全规则上?我第一天进入虚拟服务器时,就出现了同样的错误。

编辑:
我不熟悉 Docker,昨天才开始学习。昨天我拉取了最多 20 个镜像。

1 个赞

没有解决方案吗?有人能帮忙吗?

您可以尝试启动一个新的虚拟机,或者运行一个简单的 Docker 程序。Docker 提供了一些类似“Hello World”的示例。您可以借此测试 Docker 是否能正常工作。

1 个赞

Docker 运行正常。我使用 Docker 安装了 TeamSpeak 3,甚至安装了 Nginx 并测试了 80 端口。但在执行 Discourse 的命令时出现了错误。

我从头开始进行设置。

root@localhost:~# su -
root@localhost:~# git clone https://github.com/discourse/discourse_docker.git /var/discourse
正在克隆到 '/var/discourse'...
remote: 枚举对象:5025,完成。
remote: 总计 5025(差异 0),重用 0(差异 0),重新打包 5025
接收对象:100% (5025/5025),1.10 MiB | 2.40 MiB/s,完成。
解析差异:100% (3259/3259),完成。
root@localhost:~# cd /var/discourse
root@localhost:/var/discourse# ./discourse-setup
Docker 未安装。按回车键从 https://get.docker.com/ 安装,或按 Ctrl+C 退出
  % Total    % Received % Xferd 平均速度   时间    时间     时间   当前
                                 下载   上传   总计   已用    剩余  速度
100 13857  100 13857    0     0   6805      0  0:00:02  0:00:02 --:--:--  6809
# 执行 Docker 安装脚本,提交:3d8fe77c2c46c5b7571f94b42793905e5b3e42e4
+ sh -c apt-get update -qq >/dev/null
+ sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | apt-key add -qq - >/dev/null
警告:apt-key 输出不应被解析(标准输出不是终端)
+ sh -c echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" >/etc/apt/sources.list.d/docker.list
+ sh -c apt-get update -qq >/dev/null
+ [ -n  ]
+ sh -c apt-get install -y -qq --no-install-recommends docker-ce >/dev/null
+ sh -c docker version
客户端:Docker Engine - 社区版
 版本:           20.10.2
 API 版本:       1.41
 Go 版本:        go1.13.15
 Git 提交:        2291f61
 构建时间:       Mon Dec 28 16:17:32 2020
 OS/架构:        linux/amd64
 上下文:         default
 实验性功能:     true

服务器:Docker Engine - 社区版
 Engine:
  版本:          20.10.2
  API 版本:      1.41(最低版本 1.12)
  Go 版本:       go1.13.15
  Git 提交:       8891c58
  构建时间:       Mon Dec 28 16:15:09 2020
  OS/架构:        linux/amd64
  实验性功能:     false
 containerd:
  版本:          1.4.3
  Git 提交:        269548fa27e0089a8b8278fc4fc781d7f65a939b
 runc:
  版本:          1.0.0-rc92
  Git 提交:        ff819c7e9184c13b7c2607fe6c30ae19403a7aff
 docker-init:
  版本:          0.19.0
  Git 提交:        de40ad0
如果您希望以非 root 用户身份使用 Docker,现在应考虑
使用类似以下命令将您的用户添加到 "docker" 组:

  sudo usermod -aG docker your-user

请记住,您需要注销并重新登录才能使此更改生效!

警告:将用户添加到 "docker" 组将赋予运行容器的能力,
         这些容器可用于在 Docker 主机上获取 root 权限。
         更多信息请参阅 https://docs.docker.com/engine/security/security/#docker-daemon-attack-surface
端口 80 似乎已被占用。

这将向您展示正在使用端口 80 的命令
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    958     root    8u  IPv4  20899      0t0  TCP *:http (LISTEN)
nginx    958     root    9u  IPv6  20901      0t0  TCP *:http (LISTEN)
nginx   3368 www-data    8u  IPv4  20899      0t0  TCP *:http (LISTEN)
nginx   3368 www-data    9u  IPv6  20901      0t0  TCP *:http (LISTEN)

如果您尝试同时运行 Discourse 和其他 Web 服务器(如 Apache 或 nginx),
您需要绑定到不同的端口

请参阅 https://meta.discourse.org/t/17247

如果您正在重新配置已配置的 Discourse,请使用

./launcher stop app

在重新配置 Discourse 之前停止它,然后重试。
root@localhost:/var/discourse# ./launcher stop app

警告:我们即将开始下载 Discourse 基础镜像
此过程可能需要几分钟到一小时,具体取决于您的网络速度

请耐心等待

2.0.20201221-2020: 正在从 discourse/base 拉取
6ec7b7d162b2: 拉取完成
488a5181297e: 提取中 [========================>                          ]  384.9MB/775.2MB
^C
root@localhost:/var/discourse# ./launcher stop app

警告:我们即将开始下载 Discourse 基础镜像
此过程可能需要几分钟到一小时,具体取决于您的网络速度

请耐心等待

2.0.20201221-2020: 正在从 discourse/base 拉取
6ec7b7d162b2: 拉取完成
488a5181297e: 拉取完成
摘要:sha256:e181dd9046cc293b10c5b29bbc21c5aa8b939ba5f0c500da4a9e952ed0b5195d
状态:已下载 discourse/base:2.0.20201221-2020 的新镜像
docker.io/discourse/base:2.0.20201221-2020
未找到配置文件,请确保 containers/app.yml 存在

ls: 无法访问 '*.yml':没有那个文件或目录
可用配置 ( )

正如所示,如果端口 80 或 443 上已有服务在运行,则无法使用 Discourse 安装程序。

2 个赞

是的,它有效。我该如何更改 Discourse 的 Nginx 端口?我的服务器上已安装了 Ghost。为什么我不能使用 80 和 443 端口?