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
我对基于 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