Не могу отладить узел, с помощью nodemon, dockerfile и docker -compose - PullRequest
0 голосов
/ 02 мая 2020

Я много чего перепробовал, прочитал много статей, иногда моя отладка даже не работает, и когда это происходит, мое приложение НИКОГДА не останавливается в точке останова, пока я запускаю приложение с docker , если я удаляю запуск. json и запускаю свое приложение за пределами docker, просто запустив «приложение узла. js», я могу отладить нормально.

Извините, если это очевидно, что я делаю, я действительно изо всех сил пытаюсь это сделать.

ТАК Я был бы рад, если бы кто-нибудь мог дать мне какое-либо руководство.

Это мой пакет. json

 "name": "ahgorastrainer",
 "version": "1.0.0",
 "description": "",
 "main": "app.js",
 "scripts": {
   "test": "echo \"Error: no test specified\" && exit 1",
   "start": "nodemon --inspect=0.0.0.0:9229 app.js"
 },
 "author": "Pedro Verani",
 "license": "ISC",
 "dependencies": {
   "bcryptjs": "^2.4.3",
   "body-parser": "^1.19.0",
   "bootstrap": "^4.4.1",
   "ejs": "^3.1.2",
   "express": "^4.17.1",
   "express-session": "^1.17.1",
   "mongoose": "^5.9.10",
   "nodemailer": "^6.4.6",
   "nodemon": "^2.0.3"
 }
}

Docker -композит

 version: '3'

services:
  ahgora-strainer:
    build: .
    command: npm start
    ports: 
      - 3000:3000
      - 9229:9229
    volumes:
      - .:/usr/app 

Docker Файл

 FROM node:alpine

WORKDIR /usr/app

COPY package*.json ./

RUN npm install --quiet

COPY . . 

EXPOSE 3000

CMD ["npm", "start"] 

Запустите Json (Здесь я попробовал миллиард различных конфигураций)

 "version": "0.2.0",
    "configurations": [
        {
            "port": 9229,
            "name": "strainer",
            "type": "node",
            "request": "attach",
            "remoteRoot": "/usr/src/app",
            "restart": true,
            "sourceMaps": false,
            "timeout": 99999999
        },
    ]
} 

1 Ответ

0 голосов
/ 02 мая 2020

При запуске приложения узла в контейнере оно должно быть отлажено как процесс удаленного узла. Таким образом, вам необходимо присоединиться к процессу. Chrome делает этот процесс относительно простым (после его настройки). Обычно я делаю это:

Установите свой пакет. json обычно с помощью чего-то вроде:

  "scripts": {
    "start": "node src/index.js"
  },

установите nodemon в Dockerfile:

RUN npm install -g nodemon@1.19.1

Наконец в docker -compose:

  mynodeapp:
    build: ./nodeApp
    container_name: mynodemultidb
    command: nodemon -L --inspect=0.0.0.0:5858
    volumes:
      - ./nodeApp:/code
    ports:
      - "8000:8000"
      - "5858:5858"
      - "3000:3000"

После этого откройте приложение с docker-compose up Откройте приложение в Google chrome, перейдя на localhost:3000 (или любой другой порт, который вы открыли) Открыть Новая вкладка и перейдите к about:inspect Ваше приложение должно отображаться в разделе Удаленная цель. Chrome inspector opened

Нажмите на ссылку для проверки. Это открывает инструменты разработчика, прикрепленные к коду.

Dev tools opened Нажмите ссылку на исходный код в правой части страницы (индекс. js: 37 на картинке над). Это откроет код, и теперь можно ставить точки останова по мере необходимости debugging code

Go обратно на вкладку, на которой запущено ваше приложение, и обновить sh для активации отладки. .

...