防止 google 应用引擎重新安装库

prevent google app engine reinstall lib

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

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

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

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

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 build -t myapp .

现在继续 运行 它,只是为了确保:

docker run -it -p 8080:8080 myapp

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

希望对您有所帮助!