[英]Eliminate docker <none> images when building using docker-compose
[英]Error building Haskell stack project using docker-compose
我正在使用堆栈启动一个新的Haskell项目,我想使用docker-compose进行构建和运行,以便可以与其他应用程序(数据库,负载平衡器等)一起运行它。
但是我的堆栈项目无法在容器内部构建。 运行docker-compose后,出现此错误
...
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
- ...
我的docker-compose.yml看起来像
version: '3'
services:
be:
build: ./be
image: be
command: stack exec be
...
fe:
...
我的BE 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
我的stack.yaml
resolver: lts-11.10
packages:
我的.cabal
...
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
我的堆栈构建在本地运行良好,所以我想我用于Docker容器的Haskell映像可能有问题吗?
任何建议或帮助将不胜感激。
这与堆栈错误有关,该错误已在较新的版本中修复。 因此,我怀疑Docker映像的堆栈版本太旧。
不幸的是,木薯维护者拒绝合并补丁,从而从标志名称中删除了双连字符。 然而
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.