我正在使用Google App Engine部署一个rails应用程序,重新安装rbenv, ruby,…等库需要花费很多时间
是否有办法防止这种情况,我只是想安装新的库只有
是的…我们正在积极努力使它更快。在此期间,以下是如何让它更快的方法。在一天结束的时候,我们真正用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安装,然后设置入口点。您还可以派生我们的基本docker映像并创建自己的docker映像。有了这个文件之后,您应该做一个构建来测试它:
docker build -t myapp .
现在继续运行它,只是为了确保:
docker run -it -p 8080:8080 myapp
访问http://localhost:8080以确保所有内容看起来都很好。下次运行glcoud app deploy
时,我们将使用这个Dockerfile。应该快得多。
希望这对你有帮助!