haskell / stack的最新(lts-13.0)最小基础docker镜像?

时间:2019-01-29 09:39:27

标签: docker haskell haskell-stack

我想将我的haskell应用程序部署在docker上,我发现的基本映像fco / stack-build需要9GB!您知道基础图像比这更简单吗?

2 个答案:

答案 0 :(得分:4)

stack-build之所以是如此之大,是因为它包含Stackage上所有 all 软件包所需的系统依赖性。

我正在使用以下基本映像进行构建和部署:

FROM ubuntu:18.04

RUN apt-get update

# Build dependencies
RUN apt-get install --assume-yes curl
RUN curl -sSL https://get.haskellstack.org/ | sh
RUN apt-get install --assume-yes libtinfo-dev

# Without this haddock crashes for modules containing
# non-ASCII characters.
ENV LANG C.UTF-8

如果您只想在运行时使用映像,这并不是真正的最小化,因为在这种情况下不需要堆栈。

答案 1 :(得分:0)

首先,该映像可能仅是构建可执行文件所必需的,一旦构建了可执行文件,就可以使用多阶段docker构建或将可执行文件直接复制到更苗条的映像中。


可在此处找到dockerfile:https://github.com/commercialhaskell/stack/blob/master/etc/dockerfiles/stack-build/lts-13.0/Dockerfile

您可以删除以下命令(这些命令的总和可能很大):

# Use Stackage's debian-bootstrap.sh script to install system libraries and
# tools required to build any Stackage package.
#

RUN apt-get update && \
    apt-get install -y wget && \
    wget -qO- https://raw.githubusercontent.com/fpco/stackage/$BOOTSTRAP_COMMIT/debian-bootstrap.sh | bash && \
    rm -rf /var/lib/apt/lists/*