防止谷歌应用引擎重新安装lib



我正在使用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。应该快得多。

希望这对你有帮助!

最新更新