Я начинаю новый проект на Haskell, используя стек, и я хотел бы собрать и запустить его с помощью docker-compose, чтобы я мог запускать его с другими приложениями (db, балансировщик нагрузки и т. Д.).
Однако мой стековый проект не может быть собран внутри контейнера.После запуска 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
Сборка моего стека работает отлично, локально,поэтому я предполагаю, что может быть что-то не так с изображением на Haskell, которое я использую для контейнера Docker?
Буду признателен за любые предложения или помощь.