在 Docker 容器中执行 shell 脚本时 ENONENT
ENONENT when executing shell script in Docker container
我正在使用 node:12-alpine
和 NodeJS 后端调用 ShellJS spawn
命令。它应该 运行 shell 脚本,我已经验证和测试它在本地工作。但是,当它在 Docker 容器中 运行ning 时显示此错误。
我还使用 docker exec.
验证了该脚本存在于文件夹中
我需要在 alpine 中配置才能工作吗?
这是 ShellJS 调用的命令:source execute.sh
Error: spawn /usr/src/app/scripts/execute.sh ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:267:19)
at onErrorNT (internal/child_process.js:469:16)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
Emitted 'error' event on ChildProcess instance at:
at Process.ChildProcess._handle.onexit (internal/child_process.js:273:12)
at onErrorNT (internal/child_process.js:469:16)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
errno: 'ENOENT',
code: 'ENOENT',
syscall: 'spawn /usr/src/app/scripts/execute.sh',
path: '/usr/src/app/scripts/execute.sh',
如果您想在 alpine 中使用 shell 脚本,您必须安装一个名为 bash
的软件包。发生这种情况是因为高山没有 bash.
Alpine 默认带有 ash
shell 而不是 bash。
这里是在你的 alpine 镜像中安装 bash 的例子。
Dockerfile
FROM alpine:latest
RUN apk add --update \
nodejs \
nodejs-npm \
bash && rm -rf /var/cache/apk/*
# ...
我正在使用 node:12-alpine
和 NodeJS 后端调用 ShellJS spawn
命令。它应该 运行 shell 脚本,我已经验证和测试它在本地工作。但是,当它在 Docker 容器中 运行ning 时显示此错误。
我还使用 docker exec.
验证了该脚本存在于文件夹中我需要在 alpine 中配置才能工作吗?
这是 ShellJS 调用的命令:source execute.sh
Error: spawn /usr/src/app/scripts/execute.sh ENOENT
at Process.ChildProcess._handle.onexit (internal/child_process.js:267:19)
at onErrorNT (internal/child_process.js:469:16)
at processTicksAndRejections (internal/process/task_queues.js:84:21)
Emitted 'error' event on ChildProcess instance at:
at Process.ChildProcess._handle.onexit (internal/child_process.js:273:12)
at onErrorNT (internal/child_process.js:469:16)
at processTicksAndRejections (internal/process/task_queues.js:84:21) {
errno: 'ENOENT',
code: 'ENOENT',
syscall: 'spawn /usr/src/app/scripts/execute.sh',
path: '/usr/src/app/scripts/execute.sh',
如果您想在 alpine 中使用 shell 脚本,您必须安装一个名为 bash
的软件包。发生这种情况是因为高山没有 bash.
Alpine 默认带有 ash
shell 而不是 bash。
这里是在你的 alpine 镜像中安装 bash 的例子。
Dockerfile
FROM alpine:latest
RUN apk add --update \
nodejs \
nodejs-npm \
bash && rm -rf /var/cache/apk/*
# ...