vscode felsök typescript kompilerad i docker-behållare obesluten brytpunkt


De flesta felsökningsrecepten för VSCode + Typescript + Docker som jag har sett antar att man monterar dist/-mappen som en container-volym. Jag monterar endast src/-mappen och kompilerar Typescript inuti containern, och jag är inte riktigt säker på hur det skulle påverka min launch.json-konfiguration. Saknar jag något i min konfiguration med tanke på att jag bara kompilerar inuti containern? Kan VSCode ens stödja detta? Dokumentationen är inte särskilt tydlig om det.

Mitt npm start-skript:

{
  "scripts": {
    "start": "tsc --build tsconfig.json && tsc-watch --onSuccess \"node --inspect=0.0.0.0:9229 ./dist/index.js\""
  } 
}

Min tsconfig.json:

{
  "compilerOptions": {
    "outDir": "./dist",
    "allowJs": true,
    "esModuleInterop": true,
    "incremental": true,
    "sourceMap": true,
    "target": "es5"
  },
  "include": [ "./src/**/*" ],
  "exclude": [ "node_modules" ]
}

Min launch.json debugger-konfiguration:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Docker: Attach to Node",
      "type": "pwa-node",
      "request": "attach",
      "port": 9229,
      "address": "localhost",
      "localRoot": "${workspaceFolder}",
      "remoteRoot": "/path/in/container",
      "restart": true,
      "resolveSourceMapLocations": [
        "${workspaceFolder}/**",
        "!**/node_modules/**"
      ],
      "skipFiles": [
        "<node_internals>/**/*.js"
      ]
    }
  ]
}

När jag startar debuggern verkar den koppla upp sig (jag får container-loggar i debugkonsolen), men sedan är mina brytpunkter alltid obundna, så jag är inte säker på om det är ett problem relaterat till min mount/compile-konfiguration, eller om det är okej men att VSCode helt enkelt inte kan binda brytpunkterna.

All hjälp uppskattas mycket!

Svar #1

Exponerade du port 9229 från din docker-container? Här är ett exempel på min docker-compose-fil.

api:
  container_name: api
  hostname: my_cool_api
  env_file:
    - .env
  depends_on:
    - postgres
  build:
    context: ./api
    dockerfile: Dockerfile.dev
  ports:
      - 3005:3005
      - 9229:9229
  restart: always
  volumes:
    - ./api:/api