ruby-on-rails - 在 Dokku 上部署 Rails 时出错 - 在 Digital Ocean 上
问题描述
我正在尝试使用示例 rails 应用程序在 DigitalOcean 上运行 dokku,但是当我部署时,出现此错误:
Puma starting in single mode...
* Version 3.12.1 (ruby 2.6.3-p62), codename: Llamas in Pajamas
* Min threads: 5, max threads: 5
* Environment: production
* Listening on tcp://0.0.0.0:5000
bundler: failed to load command: rackup (/app/vendor/bundle/ruby/2.6.0/bin/rackup)
Errno::ENOENT: No such file or directory @ rb_sysopen - tmp/pids/server.pid
/app/vendor/bundle/ruby/2.6.0/gems/puma-3.12.1/lib/puma/launcher.rb:133:in `initialize'
/app/vendor/bundle/ruby/2.6.0/gems/puma-3.12.1/lib/puma/launcher.rb:133:in `open'
/app/vendor/bundle/ruby/2.6.0/gems/puma-3.12.1/lib/puma/launcher.rb:133:in `write_pid'
/app/vendor/bundle/ruby/2.6.0/gems/puma-3.12.1/lib/puma/launcher.rb:106:in `write_state'
/app/vendor/bundle/ruby/2.6.0/gems/puma-3.12.1/lib/puma/single.rb:103:in `run'
/app/vendor/bundle/ruby/2.6.0/gems/puma-3.12.1/lib/puma/launcher.rb:186:in `run'
/app/vendor/bundle/ruby/2.6.0/gems/puma-3.12.1/lib/rack/handler/puma.rb:73:in `run'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/server.rb:297:in `start'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/lib/rack/server.rb:148:in `start'
/app/vendor/bundle/ruby/2.6.0/gems/rack-2.0.7/bin/rackup:4:in `<top (required)>'
/app/vendor/bundle/ruby/2.6.0/bin/rackup:23:in `load'
/app/vendor/bundle/ruby/2.6.0/bin/rackup:23:in `<top (required)>'
我查看了其他支持站点是否有类似的错误 - 但看起来 Web 应用程序容器启动然后立即停止。
我可以看到我的数据库容器正在运行,并且我看到一个带有dokkku/myapp:latest
- 的容器,它的启动时间永远不会超过几秒钟。
有人知道为什么吗?
解决方案
Rails 6 添加了一行来config/puma.rb
指定 pidfile 的位置(默认为第 20 行,在我撰写本文时),默认值如下:
pidfile ENV.fetch("PIDFILE") { "tmp/pids/server.pid" }
我遇到了您提到的相同问题,并通过将该行更改为
pidfile ENV.fetch("PIDFILE") { "server.pid" }
tmp
从两者中删除目录.gitignore
和.dockerignore
(在我的情况下,因为我的应用程序是 Dockerized)也可以,但是tmp
在 git 和我的生产容器中使用目录闻起来很有趣,所以我选择了上述方法。
不管怎样,我很高兴你能成功!... 希望这可以帮助
PS - 您可能需要考虑选择其中一个答案是正确的(即使它是您提供的答案)快乐编码!
推荐阅读
- haskell - 我无法理解的haskell中的意外错误
- node.js - 如何在express js,mongodb中使用put请求更新数据
- session - Symfony 5:“也许你忘记在实体管理器中持久化它了?” --> Doctrine 折旧的 merge() 函数的替代方案
- sql - Hash Group By 和 Sort Group By 在 Oracle 内部如何工作?
- r - visNetwork R:指定变量节点背景颜色和边框颜色
- php - 代客不使用 php.8 Nginx 返回 Bad Gateway
- angular - 具有相同起始路径的角度延迟加载页面
- github - 如何在私有组织仓库中发布带有 github 操作的私有 github 包?
- java - 如何在 Cloud Storage for Firebase 上检查上传文件的文件类型?
- node.js - 如何在节点中启动超测文件?