the*_*bat 5 bash haskell docker docker-compose haskell-stack
我尝试在 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 的问题,而不是堆栈本身的问题,但我承认我一无所知。
另请注意:
这是服务定义:
# 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 from bd_heroku_node image
FROM bd_heroku_node
ENV LANG en_US.UTF-8
# Stack stores binaries in /root/.local/bin
ENV PATH /root/.local/bin:$PATH
# Heroku assumes we'll put everything in /app/user
RUN mkdir -p /app/user/bd-service
WORKDIR /app/user
USER root
ARG STACK_VERSION=2.1.3
RUN wget -qO- https://github.com/commercialhaskell/stack/releases/download/v$STACK_VERSION/stack-$STACK_VERSION-linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C /usr/local/bin '*/stack'
USER appuser
# . here means the entire bd-bootstrap repo, context should be set accordingly (to bd-bootstrap)
RUN stack setup --resolver lts-14.10;
USER appuser
RUN mkdir -p /app/user/bd-common
RUN mkdir -p /app/user/bd-service
COPY bd-common/*.yaml /app/user/bd-common/
RUN cd /app/user/bd-common; stack build --only-dependencies;
RUN stack install fswatcher;
Run Code Online (Sandbox Code Playgroud)
然后是我的 bash 文件 compile_hs_and_run:
# 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)
当docker-compose up bd-service它开始时失败并显示这些日志:
bd-service_1 | We are at
bd-service_1 | /app/user/bd-service
bd-service_1 | start
bd-service_1 | Version 2.1.3, Git revision 0fa51b9925decd937e4a993ad90cb686f88fa282 (7739 commits) x86_64 hpack-0.31.2
bd-service_1 | 2019-10-21 07:23:02.631167: [debug] Checking for project config at: /app/user/bd-service/stack.yaml
bd-service_1 | 2019-10-21 07:23:02.634794: [debug] Loading project config file stack.yaml
bd-service_1 | 2019-10-21 07:23:02.641395: [error] <stdin>: hGetLine: end of file
bd-service_1 | it's over
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |