Docker alpine 不对内部命令执行任何操作 shell

Docker alpine does nothing on command inside shell

我对基于 Alpine 的节点应用程序有以下 docker 声明。

FROM node:8-alpine

RUN npm install typescript
RUN npm install ts-node
RUN npm install puppeteer

CMD [ "/bin/sh" ]

在其中,我正在尝试启动 puppeteer 来呈现某些页面。我正在安装外部 ts 文件只是为了像这样执行它:

docker run -v "$(pwd):/test/" --net host -it test-chromium

当我试图在这个命令中执行时

npx ts-node /test/render.ts

这只是表明 ts-node 已安装并在安装后挂起。什么都没有发生。为了检查这是否是 chromium 运行 特定问题,我尝试在 REPL 模式下仅执行 ts-node,如下所示:

npx ts-node

并直接通过./bin

./node_modules/.bin/ts-node

什么都没发生。 Enter hit 后控制台挂起,不显示任何输入提示。即使修改 docker 直接从声明中执行此操作,也没有任何变化。

我错过了什么?

找到原因了。它是 ts-node,它在没有 tsconfig.json 的情况下挂起。没有它,当我试图从根目录 运行 时,打字稿绑定遍历所有文件夹以编译文件。添加 tsconfig.ts 并设置适当的限制后,脚本开始执行。

github对这个问题的一些评论:

https://github.com/TypeStrong/ts-node/issues/690#issuecomment-424178198