windows – Haskell和Docker合理部署的图像大小?
发布时间:2020-12-14 02:01:54 所属栏目:Windows 来源:网络整理
导读:我曾尝试使用此Dockerfile构建在Google App Engine中运行的PoC Happstack可执行文件: FROM ubuntu:14.04ENV APP_ROOT=/usr/share/appRUN apt-get update apt-get install curl -y curl -sSL https://get.haskellstack.org/ | shCOPY . ${APP_ROOT}/WORKDIR
我曾尝试使用此Dockerfile构建在Google App Engine中运行的PoC Happstack可执行文件:
FROM ubuntu:14.04 ENV APP_ROOT=/usr/share/app RUN apt-get update && apt-get install curl -y && curl -sSL https://get.haskellstack.org/ | sh COPY . ${APP_ROOT}/ WORKDIR ${APP_ROOT}/ RUN stack setup RUN stack build EXPOSE 8000 ENTRYPOINT ["stack","exec","app-exe"] 这工作,我能够部署,但结果图像似乎很大. 我认为堆栈安装后图像大约为450MB,堆栈设置后约为1.8GB,堆栈构建后约为3GB. 我认为数百MB似乎合理,甚至高达GB.我应该采取不同的方法,也许将生成的可执行文件以某种方式提取到另一个图像,以消除运行时不必要的一切? 解决方法
这非常适合docker多阶段构建:
https://docs.docker.com/develop/develop-images/multistage-build/ 您可以申请如下: FROM ubuntu:14.04 as mybuild ENV APP_ROOT=/usr/share/app RUN apt-get update && apt-get install curl -y && curl -sSL https://get.haskellstack.org/ | sh COPY . ${APP_ROOT}/ WORKDIR ${APP_ROOT}/ RUN stack setup RUN stack build FROM ubuntu:14.04 COPY --from=mybuild /path/to/app-exe /dest/app-exe #edit this line accordingly EXPOSE 8000 ENTRYPOINT ["stack","app-exe"] 第二个FROM之前的所有内容都不包含在最终图像中,除了您使用COPY复制的内容. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |