Отладочная шутка из докера

У меня есть проект узла, работающий в контейнере докеров, к которому chrome-debugger подключается через порт 9229. При использовании фактического приложения (в отличие от запуска набора тестов) отладчик отлично показывает ошибки / точки останова.

Однако, когда я запускаю npm run test:e2e из контейнера докеров, команды отладчика, точки останова и т. д. Полностью игнорируются. Набор тестов работает, но никаких перерывов не обнаруживает.

По общему признанию, я новичок как в докере, так и в узле, но тот факт, что точки останова приложения (в отличие от шутки) работают, меня полностью смущает. Если у кого-то есть идеи о том, как получить точки останова шутки из контейнера докеров, работающего в chrome-debugger (или vs code, если на то пошло), я был бы очень признателен. Детали конфигурации ниже:

docker-compose.yml

pf_debugger:
  build: ./pf
  image: pf_debugger
  container_name: pf_debugger
  working_dir: /www
  ports:
    - "9229:9229"
  command: "npm run start:debug"
  volumes:
   - ./pf:/www
   - node_modules:/www/node_modules
  depends_on:
    - "indy_pool"
    - "pf"
  networks:
    - pf_network

package.json

# ...
"scripts":
  "start:debug": "nodemon --config nodemon-debug.json",        
  "test:e2e": "jest --config ./test/jest-e2e.json",

jest-e2e.json

{
  "moduleFileExtensions": ["js", "json", "ts"],
  "rootDir": ".",
  "testEnvironment": "node",
  "testRegex": ".e2e-spec.ts$",
  "transform": {
    "^.+\\.(t|j)s$": "ts-jest"
  }
}

nodemon-debug.json

{
  "watch": ["src"],
  "ext": "ts",
  "inspect": "0.0.0.0:9229",
  "exec": "node --inspect=0.0.0.0:9229 --debug -r ts-node/register src/main.ts"
}

launch.json

{
  "version": "0.2.0",
  "configurations": [
    {
       "type": "node",
       "request": "attach",
       "name": "Node: Nodemon",
       "restart": true,
       "sourceMaps": true,
       "protocol": "inspector",
       "address": "127.0.0.1",
       "port": 9229,
       "localRoot": "${workspaceRoot}/",
       "remoteRoot": "/www/"
    },
    {
      "type": "node",
      "name": "e2e-tests",
      "request": "launch",
      "program": "${workspaceFolder}/node_modules/jest/bin/jest",
      "cwd": "${workspaceFolder}",
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "args": [
        "--runInBand",
        "--config=test/jest-e2e.json"
      ]
    }
  ]

Когда вы запускаете тесты локально с помощью vscode, правильно ли вы получаете точки останова jest?

Tree 17.10.2018 06:00

Да - работает локально, точки останова отображаются нормально

PlankTon 17.10.2018 06:47

вы пробовали подключить визуальную студию к удаленному отладчику?

Tree 17.10.2018 08:53

@ Дерево Да. Я добавил launch.json выше для ясности. :-)

PlankTon 17.10.2018 08:59

Я тоже не эксперт, но может быть, вы выставляете отладчик на localhost, и когда вы хотите подключиться к нему из внешнего отладчика, он должен быть открыт для какого-то внешнего интерфейса

Tree 17.10.2018 09:01
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
4
5
1 620
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Для справки решил свою проблему. Добавление --runInBand к команде npm:test обеспечивает соблюдение точек останова

а где твой npm: test в тех конфигах, которые ты написал? не могли бы вы объяснить лучше? У меня такие же проблемы ... / \

Reculos Gerbi Neto 30.01.2020 00:26

Здравствуйте, PlankTon, вы можете опубликовать свое полное решение? Я тоже здесь с этой проблемой.

Bruno Peres 09.03.2020 18:05

Другие вопросы по теме