rya*_*hza 5 windows google-app-engine haskell docker haskell-stack
我曾尝试使用此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"]
Run Code Online (Sandbox Code Playgroud)
这工作,我能够部署,但结果图像似乎很大.
我认为安装后图像大约为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"]
Run Code Online (Sandbox Code Playgroud)
FROM除了您复制的内容之外,最终图像中不包括第二个之前的所有内容COPY --from.
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |