Ошибка npm контейнера Docker! Сбой внутренней проверки: обнаружена циклическая символическая ссылка

#node.js #docker #npm

#node.js #docker #npm

Вопрос:

Я создал экспресс-API, и он будет нормально работать на порту 5000. Когда я помещаю его в контейнер Docker, он сначала запускается, но затем я получаю сообщение об ошибке, подобное этому.

 > nodejs-express-sequelize-postgresql@1.0.0 start
> nodemon server.js

[nodemon] 2.0.6
[nodemon] to restart at any time, enter `rs`
[nodemon] watching path(s): *.*
[nodemon] watching extensions: js,mjs,json
[nodemon] starting `node server.js`
(node:33) [SEQUELIZE0004] DeprecationWarning: A boolean value was passed to options.operatorsAliases. This is a no-op with v5 and should be removed.
(Use `node --trace-deprecation ...` to show where the warning was created)
(node:33) Warning: Accessing non-existent property 'Sequelize' of module exports inside circular dependency
Server is running on port 5000.
Executing (default): CREATE TABLE IF NOT EXISTS "simplenims" ("id"   SERIAL , "nim" VARCHAR(255), "nama" VARCHAR(255), "status" BOOLEAN, "createdAt" TIMESTAMP WITH TIME ZONE NOT NULL, "updatedAt" TIMESTAMP WITH TIME ZONE NOT NULL, PRIMARY KEY ("id"));
[nodemon] Internal watch failed: Circular symlink detected: "/usr/bin/X11" points to "/usr/bin"
npm ERR! code 1
npm ERR! path /
npm ERR! command failed
npm ERR! command sh -c nodemon server.js

npm ERR! A complete log of this run can be found in:
npm ERR!     /root/.npm/_logs/2020-12-14T11_53_26_130Z-debug.log
 

Это мой файл Dockerfile выглядит так

 FROM node:latest

WORKDIR /

COPY package*.json ./
 
RUN npm install

COPY . .

ENV port=5000

EXPOSE 5000

CMD ["npm", "start"]
 

Я следовал документации Docker, чтобы создать Dockerfile. Что-то не так или мне нужно добавить в Dockcerfile?

Ответ №1:

Nodemon просматривает все файлы внутри корневого каталога проекта. Чтобы избежать этой проблемы, вы можете создать nodemon.js файл в корне проекта со следующим содержимым:

 {
  "ext": "js"
}
 

Этот ответ взят из проблемы Github. Это действительно похоже на вашу проблему.

[Проблема с Github] Сбой внутренней проверки: обнаружена циклическая символическая ссылка

[Оригинальный ответ]

Ответ №2:

Это связано с nodemon. Вот как решить —

С dockerfile вот так:

  FROM node:14.15.0
 WORKDIR /app 
 COPY . /app 
 RUN npm install 
 CMD npm run dev
 

Создайте образ и затем запустите его в контейнере с интерактивным терминалом (необязательно), подключив том из текущего каталога хоста (pwd) в WORKDIR (/ app) в контейнере:

 docker build -t imagename:tag .
docker run -it -p 1234:1234 -v $(pwd):/app imagename:tag
 

Или с помощью docker-compose.yml

 version: '3.6'
services:
  server:
    build: .
    volumes:
    - .:/app
    ports:
    - "3000:3000"
 

Затем запустите

 docker-compose up --build