我想为工作建立一个 Haskell 堆栈项目的容器化构建。我知道stack --docker build
存在,但我想只用 docker 来做,所以我的同事不需要先安装 stack
.
我目前有一个看起来像这样的 Dockerfile:
FROM fpco/stack-build:lts-8.9
RUN mkdir -p /stack && stack --stack-root /stack setup --resolver lts-8.9
COPY build.sh /
ENTRYPOINT ["/build.sh"]
并且正在运行
stack
作为:stack build --stack-root=/stack --resolver=lts-8.9
但是,这样做存在以下问题:
--allow-different-users
,因为它似乎在重复使用我的本地 .stack-work
,这似乎不太理想我还没有弄清楚它是否会破坏 native 堆栈构建,或者诸如 intero 之类的东西。
最佳答案
我通常把 volumes
附带的 docker-compose.yml
中的部分将挂载 .stack-work
的文件目录到容器中。然后在 ENTRYPOINT
中引用的脚本中的Dockerfile
, 使用 stack install
而不是 stack build
.
我的 docker-compose.yml
文件可能看起来像这样,其中 backend
文件夹包含我的本地 .stack-work
目录:
version: "2"
services:
backend:
build: ./docker-containers/backend
tty: true
stdin_open: true
volumes:
- ./backend:/home/dev/backend
- ./.local:/root/.local
关于haskell - 如何在 Docker 容器中运行堆栈构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43434680/