Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker中的Haskell堆栈:额外的DEP不起作用_Docker_Haskell_Dockerfile_Haskell Stack - Fatal编程技术网

Docker中的Haskell堆栈:额外的DEP不起作用

Docker中的Haskell堆栈:额外的DEP不起作用,docker,haskell,dockerfile,haskell-stack,Docker,Haskell,Dockerfile,Haskell Stack,我尝试使用以下docker文件在docker容器中编译程序: FROM haskell:8.4 COPY stack.yaml /opt/waziup/stack.yaml COPY foo.cabal /opt/waziup/foo.cabal WORKDIR /opt/waziup RUN stack setup RUN stack install --only-dependencies COPY . /opt/waziup RUN stack install 我的stack.

我尝试使用以下docker文件在docker容器中编译程序:

FROM haskell:8.4

COPY stack.yaml   /opt/waziup/stack.yaml
COPY foo.cabal /opt/waziup/foo.cabal

WORKDIR /opt/waziup
RUN stack setup
RUN stack install --only-dependencies

COPY .  /opt/waziup
RUN stack install
我的stack.yaml文件如下所示:

resolver: lts-12.20
extra-deps:
 - servant-flatten-0.2
packages:
 - '.'
当我键入
stack install
时,此选项起作用。但是,当我尝试编译docker时:

$ docker build .

servant-flatten-0.2: download
servant-flatten-0.2: configure
servant-flatten-0.2: build
servant-flatten-0.2: copy/register

...
    /opt/waziup/src/Foo.hs:37:1: error:
        Could not find module ‘Servant.API.Flatten’
        There are files missing in the ‘servant-flatten-0.2’ package,
        try running 'ghc-pkg check'.
        Use -v to see a list of the files searched for.

有什么想法吗?额外的deps软件包会发生什么情况?

补充问题:docker在Haskell的世界里似乎不太常用(我在互联网上找到的关于这个主题的资源很少),这是为什么?通常这个错误意味着某些文件已损坏。以交互方式,您可以仅删除该包,但在Dockerfile中,重建该包可能更容易。你能:1。确保
.stack work
位于
.dockrignore
2中<代码>docker生成--无缓存。3。让我们知道这是否解决了问题。