使用以下 Dockerfile
FROM fpco/stack-build:lts-17.12 as dependencies
ENV STACK_ROOT /home/stackage/.stack
COPY ./stack.yaml ./package.yaml ./
RUN stack build --dependencies-only
Stack 将始终在构建之前从头开始下载和安装 GHC。
> [dependencies 5/7] RUN stack build --dependencies-only 2.8s
=> => # Preparing to install GHC to an isolated location.
=> => # This will not interfere with any system-level installation.
=> => # Preparing to download ghc-8.10.4 ...
=> => # ghc-8.10.4: download has begun
=> => # ...
我已经为STACK_ROOT
环境变量尝试了不同的值(包括无,保留默认值),但没有一个起作用。
现在,如果我注释掉该RUN stack build
行并拉取图像,然后在其中运行一个 shell,我可以看到 GHC 和 Stack 已经预安装在/home/stackage/.stack
Linux 二进制文件中。
尽管如此,Stack 为何总是选择从头开始下载和安装所有内容?有没有办法避免它?
编辑:这个答案似乎表明 usingSTACK_ROOT=/home/stackage/.stack
会起作用,但显然它不会 - 也许我错过了什么?