Почему я получаю ошибку «межустройственная ссылка запрещена» в Docker в конвейере Gitlab CI / CD?

#reactjs #docker #npm #gitlab

#reactjs #docker #npm #gitlab

Вопрос:

Я попытался удалить папку node_modules, но я все еще получаю ошибку. Он работал нормально, но внезапно начал выдавать эту ошибку.

Это приложение react, если это поможет.

Файл Docker

 ## Stage 0, "builder", based on Node.js, to build and compile the frontend
# base image
FROM node:alpine as builder

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

## add app
COPY . /app

# delete node modules to fix discrepancies
RUN rm -rf node_modules/

#RUN npm install amp;amp; npm audit fix amp;amp; npm audit fix --force amp;amp; npm install
RUN npm install -g npm@7.0.3 amp;amp; npm install amp;amp; npm audit fix
RUN npm run build 

## Stage 1, "deployer", use nginx to deploy the code
## start app
FROM nginx:alpine

RUN rm -rf /usr/share/nginx/html/*
COPY --from=builder /app/build /usr/share/nginx/html/

RUN rm /etc/nginx/conf.d/default.conf
COPY ./nginx-custom.conf /etc/nginx/conf.d/default.conf

  

ошибки консоли

 npm notice 
npm notice New patch version of npm available! 7.0.2 -> 7.0.3
npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.0.3>
npm notice Run `npm install -g npm@7.0.3` to update!
npm notice 
npm ERR! code EXDEV
npm ERR! syscall rename
npm ERR! path /usr/local/lib/node_modules/npm
npm ERR! dest /usr/local/lib/node_modules/.npm-i9nnxROI
npm ERR! errno -18
npm ERR! EXDEV: cross-device link not permitted, rename '/usr/local/lib/node_modules/npm' -> '/usr/local/lib/node_modules/.npm-i9nnxROI'
npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-10-23T16_47_42_554Z-debug.log
The command '/bin/sh -c npm install -g npm@7.0.3 amp;amp; npm install amp;amp; npm audit fix' returned a non-zero code: 238
  

Комментарии:

1. У меня такая же проблема, на самом деле это может быть ошибка в npm 7. Но я не могу подтвердить.

Ответ №1:

Я столкнулся с той же проблемой. Поскольку ваш базовый образ является node, npm уже должен быть установлен глобально. Нет необходимости запускать npm install -g npm@7.0.3 и по-прежнему иметь возможность впоследствии выполнять все элементы, связанные с npm.

Комментарии:

1. Возможно, я ошибаюсь, но, похоже, это просто уведомления, ошибки, похоже, появляются после установки пакетов, не так ли? Я попробую удалить строку и проверить, работает ли она. Спасибо

2. npm install -g npm@latest Может потребоваться запуск для обновления npm до последней версии после установки NodeJS.

Ответ №2:

Извините, недостаточно представителя для комментариев.

На самом деле я тоже столкнулся с подобными проблемами. Узел был обновлен, что увеличило версию npm до 7 , что, похоже, вызывает проблемы у людей. Мое решение, пока я не смогу полностью устранить проблемы, заключалось в том, чтобы заблокировать версию моего узла / NPM в моей сборке контейнера.

FROM node:14.14-alpine3.11 является ли инструкция, которую я использую, поддерживает меня на какой-то версии 6.x.x, чтобы мои сборки работали.