从 google App Engine SSH 执行 `docker exec` 时终端挂起

Terminal hangs when executing `docker exec` from google app engine SSH

我正在 运行 在 google 应用程序引擎上设置一个 flex 环境,它在 Rails 应用程序上托管 Ruby。我想访问此应用程序上的 rails console。当我从本地终端或通过 google 网络控制台 SSH 进入一个实例时,我执行命令 docker exec -it gaeapp /bin/bash -c "bundle exec rails c"

它开始启动 rails 控制台,但很快挂起。我可以在它完全停止响应之前输入一两个命令。

我可以在 SSH 控制台中为所欲为,但第二次我 运行 docker exec 命令开始挂起。知道发生了什么事吗?

我们的app.yaml

entrypoint: RAILS_ENV=develop bundle exec rails server --port $PORT
env: flex
runtime: ruby
instance_class: F1

env_variables:
  RAILS_MASTER_KEY: ${RAILS_MASTER_KEY}

beta_settings:
  cloud_sql_instances: [hidden]

运行 ruby '2.6.3' 'rails', '~> 5.2.3'

我可以在你的 app.yaml 中看到:instance_class: F1。这不是 App Engine 灵活的有效设置。

因此,一种可能是您的实例 运行 资源不足。请尝试为实例设置更多 CPU 和 resource setting of app.yaml 中的内存。

此外,请注意,如果您尝试在实例内部使用 SSH 进行一些更改,当此特定实例 killed/restarted 并从原始部署代码重新创建时,所有更改都将丢失。