如何在Docker Compose中使用Haskell Stack?

3
我正在尝试使用docker compose在本地开发中将一些Haskell服务绑定在一起。我大部分时间都在stack ghci, 运行单元测试等,但我也需要能够运行涉及依赖项的代码。Docker compose非常适合此用途:我可以运行依赖项(数据库,其他服务等),并将所有东西连接在一起。
Stack具有docker支持。它可以使用docker: enable: true在docker容器中构建,并且还可以使用stack image container创建可执行图像。
如何从docker-compose.yml内利用stack的docker功能呢?
version: "3"

services:

  my-service:

    # how can I use `stack image container` here? Is it possible?
    build: '.'

    links:
    - other-service

    env_file:
    - test.env

  other-service:
    image: other-service-image

我需要自己创建Dockerfile吗?还是可以使用stack image container功能?

跟进问题:是否有一种方式可以使用docker compose文件中的所有设置(env、links等)运行stack ghci


据我所知,Stack 的 Docker 集成目前似乎还无法与 Docker Compose 很好地配合使用(尚未支持?),但你可以查看 servant-docker Stack 模板的示例,了解如何使用 Stack + Docker Compose。该模板并不使用 Stack 的 Docker 集成功能,但对我来说已经运行良好。 - Erik
如果有帮助的话,这是我的一个示例项目:https://github.com/chrissound/ArchCompareTryCatchDeploy - Chris Stryczynski
1个回答

1
这只回答了你的后续问题(在docker中堆栈ghci)。 是可能的。
取决于您的服务/容器命名方式(您可以使用docker ps确定此内容):
如果您的容器已经在运行(通过docker-compose up / docker run): docker exec -it directoryName_my-service_1 /bin/stack ghci

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接