Docker中的Haskell堆栈:额外的DEP不起作用
我尝试使用以下docker文件在docker容器中编译程序: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.
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。让我们知道这是否解决了问题。