Docker部署NodeGoat报standard_init_linux.go:228无此文件或目录错误
Docker运行NodeGoat报错解决方案
standard_init_linux.go:228: exec user process caused: no such file or directory 报错在Alpine镜像场景下主要由两类问题导致,对应解决方案如下:
1. 修复entrypoint.sh换行符格式
Windows系统下编写或拉取的脚本默认使用
CRLF(\r\n)换行符,Alpine Linux的shell无法识别该格式,会将\r识别为路径的一部分,导致找不到脚本文件。
- 修复方案二选一即可:
- 使用代码编辑器打开
entrypoint.sh,将文件换行符格式修改为LF后保存 - 在Dockerfile中给脚本加执行权限的命令前,新增自动转换换行符的逻辑:
COPY entrypoint.sh /usr/local/bin/ # 新增下面这行 RUN sed -i 's/\r$//' /usr/local/bin/entrypoint.sh RUN ["chmod", "+x","/usr/local/bin/entrypoint.sh"] - 使用代码编辑器打开
2. 安装脚本依赖的nc工具
你使用的
node:12-alpine是极简系统镜像,默认没有预装脚本中用到的nc(netcat)网络工具,执行对应命令时也会触发找不到文件的报错。
- 修复方案:在Dockerfile第二构建阶段的开头新增安装依赖的命令:
FROM node:12-alpine # 新增下面这行,安装nc工具 RUN apk add --no-cache netcat-openbsd ENV USER node # 后续原有内容保持不变
重新启动验证
修改完成后执行以下命令重新构建镜像并启动即可:
docker-compose up --build
内容的提问来源于stack exchange,提问作者Aisha
相关产品推荐
相关产品推荐

