如何在 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 中一起使用主机网络和任何其他用户定义的网络?
如何知道我的程序是不是完全在我的 docker 中使用 compose 启动
如何在 AWS Elastic Container Service 中使用现有的 docker-compose.yml 文件?