【问题标题】:Terminal hangs when executing `docker exec` from google app engine SSH从谷歌应用引擎SSH执行`docker exec`时终端挂起
【发布时间】:2019-07-25 20:49:14
【问题描述】:

我在托管 Ruby on Rails 应用程序的 Google 应用引擎上运行 flex 环境。我想访问此应用程序上的rails console。当我从本地终端或通过 google web 控制台通过 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'

【问题讨论】:

    标签: docker google-app-engine google-cloud-platform app-engine-flexible


    【解决方案1】:

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

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

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

    【讨论】:

    • F1是一个用于伸缩的实例类:cloud.google.com/appengine/docs/standard/#instance_classes
    • 它确实是一个实例类,但仅适用于 App Engine 标准服务,而不是在 App Engine flex 服务中定义资源的方式。您可以检查 F1 机器拥有的资源并在您的弹性实例 app.yaml 中指定它们。
    • 嗨@theartofbeing 它对你有用吗?如果是这样,请接受我的回答,以便其他用户更好地了解。如果不是,请将您的跟踪日志添加到问题中以进一步调查。
    猜你喜欢
    • 2017-09-24
    • 2012-06-03
    • 1970-01-01
    • 2013-12-05
    • 1970-01-01
    • 2014-01-08
    • 2011-01-10
    • 1970-01-01
    • 2016-11-28
    相关资源
    最近更新 更多