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