【问题标题】:prevent google app engine reinstall lib防止谷歌应用引擎重新安装库
【发布时间】:2016-08-19 03:30:47
【问题描述】:

我正在使用 Google App Engine 部署 Rails 应用程序,重新安装 rbenv、ruby 等库需要花费大量时间...

有没有办法防止这种情况,我只想安装新库

【问题讨论】:

标签: ruby-on-rails ruby google-app-engine gcloud


【解决方案1】:

是的...我们正在积极努力提高速度。在此期间,您可以通过以下方法使其更快。归根结底,我们对 App Engine Flex 所做的只是为您创建一个 Dockerfile,然后进行 docker 构建。对于 Ruby,我们尝试玩一些花哨的技巧,比如让您告诉我们您想要运行哪个版本的 rbenv 或 ruby​​。如果您可以对所有这些进行硬编码,则可以使用我们的基本图像。

为此,首先打开终端并使用您的代码 cd 进入目录。然后运行:

gcloud beta app gen-config --custom

按照提示进行操作。这将在您的 CWD 中创建一个 Dockerfile。继续编辑那个文件,看看它在做什么。在最简单的形式中,您可以删除大部分内容并最终得到如下内容:

FROM gcr.io/google_appengine/ruby
COPY . /app/
RUN  bundle install --deployment && rbenv rehash;
ENV RACK_ENV=production \
    RAILS_ENV=production \
    RAILS_SERVE_STATIC_FILES=true
RUN if test -d app/assets -a -f config/application.rb; then \
    bundle exec rake assets:precompile; \
    fi
ENTRYPOINT []
CMD bundle exec rackup -p $PORT

大部分繁重的工作已经在gcr.io/google_appengine/ruby 中完成,因此您只需添加代码、执行所需的任何 gem 安装,然后设置入口点。你也可以 fork 我们的基础 docker 镜像并创建你自己的镜像。获得此文件后,您应该进行构建以对其进行测试:

docker build -t myapp .

现在继续运行它,以确保:

docker run -it -p 8080:8080 myapp

访问http://localhost:8080 以确保一切正常。现在当你下次运行glcoud app deploy 时,我们将使用这个 Dockerfile。应该快得多。

希望这会有所帮助!

【讨论】:

  • 感谢您的帮助。让我试试
  • 顺便问一下,我有没有办法通过 ssh 到应用引擎并在云端修改代码?
猜你喜欢
  • 2013-03-13
  • 1970-01-01
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多