노드/도커를 빌드할 때 uid/gid를 가져올 수 없습니다.
내 Dockerfile은 alpine을 사용하여 react-script를 글로벌하게 설치하고 있습니다.설치하려고 하면 "uid/gid를 얻을 수 없습니다" 오류가 표시되며 실패합니다.npm install -g 명령어에 "---unsafe-perm" 옵션을 추가했습니다.도커 컨테이너가 성공적으로 생성되었지만 설치된 파일에 대한 컨테이너의 사용 권한이 메시지 처리되었습니다.모든 사용자 이름과 그룹이 1000으로 설정되어 있습니다.설치 절차 직전에 다음 명령을 Docker 파일에 추가하려고 했지만 도움이 되지 않았습니다.
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:
도커 파일
/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/docker-node 문제 813과 연결되어 있는지 확인합니다.
근본 원인은 다음과 같습니다.스레드 스택사이즈
의 새 스레드에 대한 기본 스택 크기
glibc
는 메인 스레드의 스택을 지배하는 자원 제한에 따라 결정됩니다(RLIMIT_STACK
).
일반적으로는 2-10MB가 됩니다.다음의 3가지 해결책이 있습니다.
- 알파인 팀과 대화하여 해결하십시오.이미 몇 가지 논의가 있었다.
- 다음과 같이 노드 도커 알파인 이미지로 수정합니다.
- 디폴트 설정
npm_config_unsafe_perm=true
수정될 때까지 해결 방법으로 도커 이미지를 참조하십시오.
이미 세 번째 옵션을 시도했지만 다음 사항을 고려하십시오.
또는 알파인 팀에 의해 업스트림으로 수정될 때까지 슬림(데비안) 변종으로 전환해야 합니다.
리액트 애플리케이션을 도킹할 때 Docker에서 노드 알핀 이미지에 대해 동일한 문제가 발생하였습니다.
다음과 같은 도커 파일 구성으로 해결했습니다.
FROM node:8.10.0-alpine
# Set a working directory
WORKDIR /usr/src/app
COPY ./build/package.json .
COPY ./build/yarn.lock .
# To handle 'not get uid/gid'
RUN npm config set unsafe-perm true
# Install Node.js dependencies
RUN yarn install --production --no-progress
# Copy application files
COPY ./build .
# Install pm2
RUN npm install -g pm2 --silent
# Run the container under "node" user by default
USER node
CMD ["pm2", "start", "mypm2config.yml", "--no-daemon", "--env", "preprod"]
언급URL : https://stackoverflow.com/questions/52196518/could-not-get-uid-gid-when-building-node-docker
'programing' 카테고리의 다른 글
Wordpress REST API에서 카테고리/태그 목록을 검색하는 방법 (0) | 2023.03.27 |
---|---|
React Formik 외부에서 submit Form 사용 (0) | 2023.03.27 |
Oracle에서 모든 테이블 제약 조건 사용 안 함 (0) | 2023.03.27 |
wp_mail을 사용하여 첨부 메일을 보내는 방법 (0) | 2023.03.27 |
IntelliJ 15, Spring Boot devtools 라이브 새로고침이 작동하지 않음 (0) | 2023.03.27 |