Ошибка при развертывании приложения Rails 6 в Google Cloud Platform App Engine - PullRequest
0 голосов
/ 08 октября 2019

Я разработал первую итерацию приложения с использованием Ruby on Rails (ROR - v6.0.0; Ruby - v2.6.3). Мне нужно развернуть его на gcp, облачной платформе Google, так как именно это компания, для которой я работаю. Я следовал этому уроку в Google, как показано здесь . Однако, независимо от того, что я делаю, ближе к концу нажатия я получаю эту ошибку:

8536b8dd72f7: Pushed
f66b9865f45c: Layer already exists
8f213bf0e9c7: Pushed
ce02b74896ad: Pushed
a79efcc05468: Pushed
latest: digest: sha256:93b405b42825c93798db12c14f4f5d5dd09c6fc3e32861a1a1f3947c338e45a2 size: 2419
DONE
-----------------------------------------------------------------------------------------------------------------------------------------------------------

Updating service [default] (this may take several minutes)...failed.
ERROR: (gcloud.app.deploy) Error Response: [9]
Application startup error:
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:8080
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)>'

Странно то, что я пытался следовать учебнику Google с новым приложением rails (та же машина, та же среда), и я получил ту же ошибку. Биллинг включен для учетной записи, поэтому я не думаю, что это так. Приложение работает нормально, когда я запускаю его локально. В любом случае, вот мой файл 'app.yml':

entrypoint: bundle exec rackup --port $PORT
env: flex
runtime: ruby

env_variables:
    SECRET_KEY_BASE: [MY_SECRET_KEY_IS_HERE]

Когда я запускаю bundle exec rackup --port 8080 на моей локальной машине, приложение запускается очень хорошо. Я искал по всему и не смог найти решение. Я видел похожие посты, но они либо не отвечают, либо не решают эту проблему. Я рассматриваю «докеризацию» приложения, но не уверен, что это что-то исправит;Но если я правильно понимаю, docker - это способ рассказать другим машинам, как запускать определенный набор инструкций, например приложение, чтобы он мог работать практически на любой машине. Идк, это действительно все, о чем я могу думать. Любые предложения приветствуются и будут оценены.

Спасибо, что уделили время на прочтение этого, и я надеюсь, что у вас будет отличный день.

1 Ответ

0 голосов
/ 09 октября 2019

У меня была такая же проблема.

Я использую гем puma в качестве сервера приложений. Мне нужно было изменить entrypoint в файле app.yaml.

entrypoint: bundle exec rails server Puma -p $PORT

Документацию можно найти здесь: https://cloud.google.com/appengine/docs/flexible/ruby/runtime

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...