用于Haskell/Stack的最新(lts-13.0)基础Docker镜像是什么?

4

我希望在 Docker 上部署我的 Haskell 应用程序,而我找到的基础镜像 fco/stack-build 大小为 9GB!你知道是否有更加精简的基础镜像吗?

2个回答

4

stack-build 的体积如此之大,是因为它包含了 Stackage 上 所有 包所需的系统依赖。

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

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

如果您只想在运行时使用图像,则实际上并不需要堆栈,因此这并不是真正的最小化。


这是关于编程的内容,翻译成中文。请只返回翻译后的文本:这对我来说足够简洁了 :-) 我们不能控制安装的 stack 版本吗?我将尝试 "stack upgrade --binary-version 1.9.3" .... - Nicolas Henin

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/*

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接