使用docker compose生成Haskell堆栈项目时出错

使用docker compose生成Haskell堆栈项目时出错,docker,haskell,docker-compose,haskell-stack,Docker,Haskell,Docker Compose,Haskell Stack,我正在使用stack启动一个新的Haskell项目,我想使用docker compose构建并运行它,这样我就可以与其他应用程序(db、负载平衡器等)一起运行它 但是,我的堆栈项目无法在容器内构建。 在运行docker compose up之后,我得到了这个错误 ... Step 6/8 : RUN stack build --dependencies-only ---> Running in 6d42f4797edd Downloading lts-11.10 build plan ..

我正在使用stack启动一个新的Haskell项目,我想使用docker compose构建并运行它,这样我就可以与其他应用程序(db、负载平衡器等)一起运行它

但是,我的堆栈项目无法在容器内构建。 在运行docker compose up之后,我得到了这个错误

...
Step 6/8 : RUN stack build --dependencies-only ---> Running in 6d42f4797edd
Downloading lts-11.10 build plan ...
Downloaded lts-11.10 build plan.
AesonException "Error in $.packages.cassava.constraints.flags['bytestring--lt-0_10_4']: Invalid flag name: \"bytestring--lt-0_10_4\""
ERROR: Service 'be' failed to build: The command '/bin/sh -c stack build --dependencies-only' returned a non-zero code: 1 
我的项目结构看起来像

- README.md
- docker-compose.yml
/be
  - Dockerfile
  - /app
  - /src
  - be.cabal
  - stack.yaml
/fe
  - ...
version: '3'
services:
    be:
        build: ./be
        image: be
        command: stack exec be
        ...
    fe:
      ...
我的docker-compose.yml看起来像

- README.md
- docker-compose.yml
/be
  - Dockerfile
  - /app
  - /src
  - be.cabal
  - stack.yaml
/fe
  - ...
version: '3'
services:
    be:
        build: ./be
        image: be
        command: stack exec be
        ...
    fe:
      ...
我的名字是Dockerfile

FROM haskell:8.2
RUN mkdir -p /app/user
WORKDIR /app/user
COPY stack.yaml *.cabal ./

RUN export PATH=$(stack path --local-bin):$PATH
RUN stack build --dependencies-only

COPY . /app/user
RUN stack install
我的朋友,亚马尔

resolver: lts-11.10
packages:
我的阴谋集团

...
library
  hs-source-dirs:      src
  exposed-modules:     Lib
  build-depends:       base >= 4.7 && < 5
                       , aeson
  default-language:    Haskell2010

executable be
  hs-source-dirs:      app
  main-is:             Main.hs
  ghc-options:         -threaded -rtsopts -with-rtsopts=-N
  build-depends:       base
                       , be
  default-language:    Haskell2010
。。。
图书馆
hs源目录:src
公开模块:Lib
构建取决于:基础>=4.7&<5
,伊森
默认语言:Haskell 2010
可执行文件
hs源目录:应用程序
main是:main.hs
ghc选项:-threaded-rtsopts-with-rtsopts=-N
构建取决于:基础
是
默认语言:Haskell 2010
我的堆栈构建在本地运行得非常好,所以我猜我用于Docker容器的Haskell映像可能有问题


如果您有任何建议或帮助,我们将不胜感激。

这与最近版本中修复的堆栈错误有关。所以,我怀疑docker映像的堆栈版本太旧了

不幸的是,木薯维护者拒绝合并从标志名中删除双连字符的补丁。霍维夫,r