有没有一种方法可以在应用引擎中一次安装软件包,以避免每次长时间部署?

时间:2019-01-25 18:08:23

标签: docker google-app-engine google-app-engine-python app-engine-flexible

我需要有ghostscript和ImageMagick才能进行一些PDF编辑和OCR。我已经说过要使用Dockerfile,但是似乎comparear = compare.Split(New String() {vbNewLine}, StringSplitOptions.RemoveEmptyEntries) listar = list.Split(New String() {vbNewLine}, StringSplitOptions.RemoveEmptyEntries) 会从头开始。是否可以通过一次安装软件包来加快速度?

这是我的Dockerfile:

If listar(p).ToLowerInvariant = comparear(i).ToLowerInvariant Then

1 个答案:

答案 0 :(得分:3)

在Dockerfile中更早地移动这些步骤。

Docker的层缓存功能意味着它不会从完全相同的基础映像中重建已经运行的步骤。但是,一旦您执行使缓存无效的步骤,此后将不会缓存任何内容。特别是如果源树中的任何内容发生更改,ADD .步骤将使缓存无效。

从风格上来说,我还要更改另外两件事。首先,出于类似的缓存原因,请务必在同一RUN步骤中运行apt-get updateapt-get install,因为先前来自“更新”的缓存URL可能无效。其次,由于Docker映像已经提供了隔离的文件系统和Python安装,因此我不会费心尝试设置Python虚拟环境。

最终,您将拥有:

FROM gcr.io/google-appengine/python
LABEL python_version=python3.6
RUN apt-get update \
 && apt-get install -y ghostscript imagemagick
COPY requirements.txt /app/
RUN pip install -r requirements.txt
COPY . /app/
EXPOSE 8000
CMD ["gunicorn", "-b", ":8000", "main:app"]