Dokku:部署 Rails 7.1 应用程序挂在“使用本机扩展安装日期 3.3.4”

问题描述 投票:0回答:2

我有 Rails 7.1,并在 DigitalOcean 上创建了一个一键式 Droplet,其中预装了 Dokku。

我现在正在尝试将 Rails 应用程序部署到生产环境,但部署处理停止在 remote: #13 45.25 Installing date 3.3.4 with native extensions:

它已经挂在那里 20 分钟了,而且还在计数。

这是我用来部署应用程序的第二个 Droplet。对于第一个(前一个),我遇到了同样的问题。这个过程持续了一个多小时,没有任何进展,所以我终止了它。

哪里可能有问题?我看不到任何错误日志来进一步调查它。有什么建议吗?

ruby-on-rails heroku digital-ocean dokku
2个回答
0
投票

看来问题出在服务器配置上。我使用

1 CPU, 1 GB Memory and 25 GB
创建了一个 Droplet,并将 Droplet 升级为
1 CPU, 2 GB Memory and 50 GB
并且部署成功。


0
投票

您的服务器可能没有足够的内存来实际完成本机扩展的编译。在编译 C 扩展(许多语言都这样做)或构建基于 Node.js 的应用程序时,这种情况相当常见。该问题将表现为部署速度非常慢(服务器分页到磁盘)或由于服务器内存不足而导致进程被终止。 解决方法是:

添加交换
  • 增加真实服务器内存
  • 在服务器外构建应用程序并部署 Docker 镜像
  • 以下内容将 2GB 交换文件添加到您的服务器(来自
dokku 文档

): sudo install -o root -g root -m 0600 /dev/null /swapfile dd if=/dev/zero of=/swapfile bs=1k count=2048k mkswap /swapfile swapon /swapfile echo "/swapfile swap swap auto 0 0" | sudo tee -a /etc/fstab sudo sysctl -w vm.swappiness=10 echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

Dokku还支持直接部署docker镜像。应用程序可以在 CI 中构建 - 例如,使用官方 
Github Action

- 然后通过 git:from-image 命令(

来自文档
)进行部署。请注意,这需要远程 docker 注册表才能工作。 # replace $APP, $REGISTRY, and $IMAGE_SHA as appropriate dokku git:from-image $APP $REGISTRY/$APP@sha256:$IMAGE_SHA

部署映像允许您将应用程序构建卸载到已经为您运行 CI 的任何地方,从而减少部署期间所需的计算。它还可以帮助您更快地进行部署,因为 CI 服务器通常比您通过托管提供商提供的虚拟机更大/更快。

© www.soinside.com 2019 - 2024. All rights reserved.