如何在 Docker Compose 中使用 Haskell Stack?

Posted

技术标签:

【中文标题】如何在 Docker Compose 中使用 Haskell Stack?【英文标题】:How to use Haskell Stack with Docker Compose? 【发布时间】:2017-09-17 15:54:24 【问题描述】:

我正在尝试使用 docker compose 将一些 haskell 服务捆绑在一起以进行本地开发。大多数时候,我在stack ghci 中搞乱,运行单元测试等,但我还需要能够运行遇到依赖项的代码。 Docker compose 非常适合:我可以运行依赖项(数据库、其他服务等),并将所有内容链接在一起。

Stack 支持 docker。它可以用docker: enable: true构建一个docker容器,也可以用stack image container创建一个可执行镜像。

如何在docker-compose.yml 中利用堆栈的 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 文件中的所有设置(环境、链接等)运行 stack ghci

【问题讨论】:

据我所知,stack 的 docker 集成并不能很好地与 docker-compose 配合使用(还没有?),但请查看servant-docker stack 模板,了解使用 stack + docker- 的示例撰写。它不使用堆栈的 docker 集成,但对我来说还不错.. 如果有帮助,这里是我的一个示例项目:github.com/chrissound/ArchCompareTryCatchDeploy 【参考方案1】:

这只会回答您的后续问题(在 docker 中堆栈 ghci)。是的,这是可能的。

取决于您的服务/容器的名称(您可以使用docker ps 确定):

如果您的容器已经在运行(通过docker-compose up / docker run):

docker exec -it directoryName_my-service_1 /bin/stack ghci

【讨论】:

以上是关于如何在 Docker Compose 中使用 Haskell Stack?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pycharm 调试在 docker-compose 中运行的进程

如何在 Spark docker-compose 网络中提交 jar?

如何在 Docker-Compose 中一起使用主机网络和任何其他用户定义的网络?

如何在 ovh 主机上使用 docker-compose

如何知道我的程序是不是完全在我的 docker 中使用 compose 启动

如何在 AWS Elastic Container Service 中使用现有的 docker-compose.yml 文件?