如何预安装堆栈依赖项,以减少堆栈构建时间?

How to pre-install stack dependencies, to reduce stack build time?

我正在从 Haskell 应用程序构建一个 docker 图像,我正在从容器内执行 stack build

因为 stack build 从 'fresh/vanilla' docker 图像开始 - 所有库都需要 installed/pulled.


有什么方法可以预安装这些库依赖项吗?为了减少 docker 图像构建时间 (stack build) 的最终目标。我还希望稍后能够 'add' 一个额外的依赖项,而不必再次 stack build 一切从头开始。

可能的解决方案:

我尝试了一系列:

RUN stack install --only-dependencies --resolver="lts-14.27" aeson
RUN stack install --only-dependencies --resolver="lts-14.27" aeson-pretty
RUN stack install --only-dependencies --resolver="lts-14.27" ansi-terminal
RUN stack install --only-dependencies --resolver="lts-14.27" ansi-wl-pprint
RUN stack install --only-dependencies --resolver="lts-14.27" appar
RUN stack install --only-dependencies --resolver="lts-14.27" array
RUN stack install --only-dependencies --resolver="lts-14.27" asn1-encoding
RUN stack install --only-dependencies --resolver="lts-14.27" asn1-parse
RUN stack install --only-dependencies --resolver="lts-14.27" asn1-types
RUN stack install --only-dependencies --resolver="lts-14.27" async
RUN stack install --only-dependencies --resolver="lts-14.27" attoparsec
RUN stack install --only-dependencies --resolver="lts-14.27" authenticate-oauth
RUN stack install --only-dependencies --resolver="lts-14.27" auto-update
RUN stack install --only-dependencies --resolver="lts-14.27" base
RUN stack install --only-dependencies --resolver="lts-14.27" base-compat
RUN stack install --only-dependencies --resolver="lts-14.27" base-orphans
RUN stack install --only-dependencies --resolver="lts-14.27" base16-bytestring

但是这有几个限制:

docker images
REPOSITORY                                                      TAG                                                   IMAGE ID            CREATED             SIZE
<none>                                                          <none>                                                d2a95ef3622d        11 seconds ago      67GB

这似乎可以做到:

stack build --only-dependencies

可以一步手动安装依赖项,例如:

stack install --resolver lts-14.27 Cabal Only RSA SHA StateVar adjunctions aeson ...