1

我正在使用node:12-alpine调用 ShellJSspawn命令的 NodeJS 后端。它应该运行 shell 脚本,我已经验证并测试了它在本地工作。但是,它在 Docker 容器中运行时会显示此错误。

我还使用 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',
4

1 回答 1

0

如果你想在 alpine 中使用 shell 脚本,你必须安装一个名为bash. 发生这种情况是因为 alpine 没有 bash。

Alpineash作为默认 shell 而不是 bash。

这是在您的 alpine 映像中安装 bash 的示例。

Dockerfile

FROM alpine:latest
RUN apk add --update \
nodejs \
nodejs-npm \
bash && rm -rf /var/cache/apk/*
# ...
于 2020-06-10T09:18:08.460 回答