簡體   English   中英

Haskell和Docker合理部署了圖像大小?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM