[英]Haskell and Docker reasonable deployed image size?
我曾嘗試使用此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 stack
安裝,大約1.8GB以下stack setup
,以及約3GB以下stack build
。
我認為數百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","exec","app-exe"]
第二個FROM
之前的所有內容都不包含在最終圖像中,除了您使用COPY --from
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.