App Engine自定义运行时不缓存dockerfile

时间:2016-04-16 22:06:21

标签: google-app-engine

我正在使用custom runtime部署到应用引擎,我注意到在部署时,应用引擎将完全重新构建我的Dockerfile而不进行任何缓存。这会导致部署时间更长。我没有在部署之间更改我的Dockerfile。只有我的应用程序代码正在改变这是我的Dockerfile:

FROM ubuntu
EXPOSE 8080

RUN apt-get update
RUN apt-get install -yq python-crypto python-openssl libffi-dev libssl-dev
RUN pip install --upgrade pip
RUN pip install gunicorn==19.4.5
RUN pip install Flask==0.10.1
RUN pip install PyMySQL==0.7.2
RUN pip install alembic==0.8.5
RUN pip install Flask-Migrate==1.8.0
RUN pip install Flask-CORS==2.1.2
RUN pip install PyCrypto==2.6.1
RUN pip install requests==2.9.1
RUN pip install --upgrade cffi
RUN pip install google-api-python-client==1.5.0
RUN pip install gcloud==0.11.0

# Ensure that Python outputs everything that's printed inside
# the application rather than buffering it.
ENV PYTHONUNBUFFERED 1

ADD . /app/
WORKDIR /app

ENTRYPOINT ["gunicorn", "-b", ":8080", "server:app"]

有没有办法加快我的部署?

2 个答案:

答案 0 :(得分:1)

部署的目标是构建将作为应用程序执行的docker镜像。

dockerfile只包含docker image构建指令,因此其内容不会改变的事实意味着什么 - 仍然需要执行构建指令才能获得新的docker镜像。

加速docker镜像构建的唯一方法是将未更改的临时结果(例如当前FROM图像加上安装的所有pip包)存储为临时docker镜像,作为参考FROM用于另一个仅更新应用代码的dockerfile。但AFAIK GAE(至少尚未)允许保存此类自定义中间图像,以便在构建其他自定义图像时重新用作基本图像。

答案 1 :(得分:0)

如果您有正确配置的本地docker环境,则可以使用--docker-build local标志执行本地构建。

--docker-build DOCKER_BUILD
     

执行托管(“远程”)或本地(“本地”)Docker构建。要执行本地构建,必须正确配置本地docker环境。默认为托管构建。

     

- https://cloud.google.com/sdk/gcloud/reference/preview/app/deploy#--docker-build