【发布时间】:2016-08-19 03:30:47
【问题描述】:
我正在使用 Google App Engine 部署 Rails 应用程序,重新安装 rbenv、ruby 等库需要花费大量时间...
有没有办法防止这种情况,我只想安装新库
【问题讨论】:
标签: ruby-on-rails ruby google-app-engine gcloud
我正在使用 Google App Engine 部署 Rails 应用程序,重新安装 rbenv、ruby 等库需要花费大量时间...
有没有办法防止这种情况,我只想安装新库
【问题讨论】:
标签: ruby-on-rails ruby google-app-engine gcloud
是的...我们正在积极努力提高速度。在此期间,您可以通过以下方法使其更快。归根结底,我们对 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。应该快得多。
希望这会有所帮助!
【讨论】: