当前位置: 首页 > 面试题库 >

构建Node / Docker时无法获取uid / gid

郭和硕
2023-03-14
问题内容

我的Dockerfile使用Alpine并在全球范围内安装react-scripts。尝试安装时,失败并显示“无法获取uid / gid”错误。我在npm
install -g命令中添加了“ –unsafe-
perm”选项。docker容器已成功创建,但是容器中的权限已通过消息通知已安装的文件。我看到所有用户名和组都设置为1000。我尝试在安装步骤之前将以下命令添加到Dockerfile中,但这无济于事。

RUN npm -g config set user root

建立错误

Error: could not get uid/gid
[ 'nobody', 0 ]

    at /usr/local/lib/node_modules/npm/node_modules/uid-number/uid-number.js:37:16
    at ChildProcess.exithandler (child_process.js:296:5)
    at ChildProcess.emit (events.js:182:13)
    at maybeClose (internal/child_process.js:961:16)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:250:5)
TypeError: Cannot read property 'get' of undefined
    at errorHandler (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:205:18)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:76:20
    at cb (/usr/local/lib/node_modules/npm/lib/npm.js:228:22)
    at /usr/local/lib/node_modules/npm/lib/npm.js:266:24
    at /usr/local/lib/node_modules/npm/lib/config/core.js:83:7
    at Array.forEach (<anonymous>)
    at /usr/local/lib/node_modules/npm/lib/config/core.js:82:13
    at f (/usr/local/lib/node_modules/npm/node_modules/once/once.js:25:25)
    at afterExtras (/usr/local/lib/node_modules/npm/lib/config/core.js:173:20)
    at Conf.<anonymous> (/usr/local/lib/node_modules/npm/lib/config/core.js:231:22)
/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:205
  if (npm.config.get('json')) {
                 ^

TypeError: Cannot read property 'get' of undefined
    at process.errorHandler (/usr/local/lib/node_modules/npm/lib/utils/error-handler.js:205:18)
    at process.emit (events.js:182:13)
    at process._fatalException (internal/bootstrap/node.js:472:27)
ERROR: Service 'sample-app' failed to build: The command '/bin/sh -c npm install react-scripts@1.1.1 -g' returned a non-zero code:

Docker文件

/usr/src/app # cat Dockerfile
# build environment
FROM node:10-alpine as builder
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
ENV PATH /usr/src/app/node_modules/.bin:$PATH
COPY package.json /usr/src/app/package.json
RUN npm install
RUN npm install react-scripts@1.1.1 -g 
COPY . /usr/src/app
RUN npm run build

# production environment
FROM nginx:1.13.9-alpine
COPY --from=builder /usr/src/app/build /usr/share/nginx/html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

问题答案:

UPD 固定的nodejs@12.4.0

检查这是否链接到nodejs / docker-node问题813:

根本原因似乎是:线程堆栈大小

新线程的默认堆栈大小glibc是根据控制主线程堆栈(RLIMIT_STACK)的资源限制确定的。
它通常最终为2-10 MB。

有三种可能的解决方案:

  • 与高山团队讨论以解决此问题。已经有一些讨论
  • 如下所示在节点docker
    alpine映像中修复它
  • npm_config_unsafe_perm=true在解决之前,请在Docker映像中将default设置为解决方法。

您已经尝试了第三种选择,但也请考虑:

或者,您应该切换到苗条(Debian)版本,直到Alpine团队解决此问题为止。



 类似资料:
  • 我尝试启动一个docker-container,但我有一个错误:

  • 问题内容: 我尝试在构建映像的同时使用Docker安装软件,然后得到了。 我使用的Dockerfile 有没有一种方法可以在Dockerfile中运行docker命令来创建映像? 问题答案: 您的问题不在于Docker命令,因为它在错误消息中表示您的Docker守护程序未运行,或者由于某些配置问题而无法连接到它。 您刚刚安装了Docker吗?您是否完成了《安装指南》中的所有步骤? 您可以使用或来测

  • 我试图在云函数中获得通过firebase web sdk验证的用户的UID。cloud函数由cloud FireStore的事件触发。 当登录用户正在创建/更新CAFE中的项目时,会触发此功能。身份验证由处理。安全规则仅对登录的用户启用写操作。因此该事件可以绑定到用户。 文档中有处理的示例,但在所有这些情况下,userId都是文档路径的一部分。但是在这个模型中,用户不是路径的一部分,因为一个咖啡馆

  • 目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个

  • 问题内容: 我正在用Djnago和MySql构建应用程序。我想使用docker来部署我的应用程序。我已经准备了一个,和 docker-compose.yml requirements.txt Docker文件 settings.py 我一直在尝试运行命令从docker文件构建映像,但出现此错误。看起来MySql连接器有问题。我尝试搜索解决方案,但找不到任何解决方法。如果从中删除 mysql_db

  • 我们使用nextjs/reactjs作为FE,并且我们有一个server.js文件,它允许我们在上传映像,但是由于某种原因,每当我们运行服务器时,都会出现错误 下面是我们在server.js上的代码 这些是我们package.json中包含的脚本 希望得到一些答案和建议。这些代码在本地运行,没有任何问题