与docker

时间:2017-09-05 13:53:35

标签: haskell haskell-stack

我们的团队正在使用Docker构建我们的Haskell应用程序,为了优化构建时间,我们努力将操作系统中的~/.stack目录与docker容器内的一个共享。最初的实现只是重用OS中的那个,但事实证明这不能很好地工作,它失败并出现如下错误:

The GHC located at /root/.stack/programs/x86_64-linux/ghc-8.0.1/bin/ghc failed to compile a sanity check. Please see:
    http://docs.haskellstack.org/en/stable/install_and_upgrade/
for more information. Exception was:                                                                                                                                                 Running /root/.stack/programs/x86_64-linux/ghc-8.0.1/bin/ghc /tmp/stack-sanity-check48/Main.hs -no-user-package-db in directory /tmp/stack-sanity-check48/ exited with ExitFailure 127

/root/.stack/programs/x86_64-linux/ghc-8.0.1/bin/ghc: line 9: /home/ubuntu/.stack/programs/x86_64-linux/ghc-8.0.1/lib/ghc-8.0.1/bin/ghc: No such file or directory
make: *** [adserver_executables] Error 1

好像~/.stack中的某个地方有一个缓存,它指明了GHC的绝对路径,当我们在docker中挂载~/.stack时,它会挂载为/root/.stack而不是{{} 1}},因此该路径找不到编译器。

我们目前的决定是创建一个单独的目录/home/<user>/.stack,我们将用于所有基于docker的构建,而不会干扰操作系统级别的目录。这并不理想,因为它会占用更多空间,即使在非docker操作系统级环境中编译它们也需要重新编译包。

是否有更好的方法可以建议与内部码头工作堆共享~/.docker-stack?谢谢。

0 个答案:

没有答案