小编the*_*bat的帖子

在 docker-compose 命令中运行 stack build --file-watch 时如何修复“<stdin>: hGetLine: end of file”

我尝试在 docker-compose 服务中为我的 haskell RPC 服务器代码进行自动重建和 rexecute 设置。该命令是一个 bash 脚本stack build --file-watch(以及另一个在二进制文件更改时启动二进制文件的命令,但这有效)。问题是,无论我尝试什么,stack build --file-watch命令都会失败并出现一个神秘的错误<stdin>: hGetLine: end of file

我不明白为什么会出现此错误,尤其是因为如果我使用 运行相同的命令docker-compose run bd-service bash -l -c "./bd-service/compile_hs_and_run.sh",它会按预期工作。我相信这是执行 docker-compose up 时如何处理 bash 的问题,而不是堆栈本身的问题,但我承认我一无所知。

另请注意:

  • 删除 --file-watch 选项使脚本工作
  • 用 --file-watch-poll 替换 --file-watch 不会改变任何东西

这是服务定义:

  # this is my service definition in docker-compose.yml
  bd-service:
    build:
      context: '.'
      dockerfile: 'dockerfiles/bd_heroku_service.Dockerfile'
      args:
        UID: "$UID"
    command:  bash -l -c "./bd-service/compile_hs_and_run.sh"
    user: "$UID"
    volumes:
      - .:/app/user

Run Code Online (Sandbox Code Playgroud)

这是相关的 dockerfile:

# Inherit …
Run Code Online (Sandbox Code Playgroud)

bash haskell docker docker-compose haskell-stack

5
推荐指数
0
解决办法
323
查看次数

标签 统计

bash ×1

docker ×1

docker-compose ×1

haskell ×1

haskell-stack ×1