加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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复制的内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读