vscode docker konteynerinde derlenmiş typescript için bağlanmamış hata noktası


Gördüğüm VSCode + Typescript + Docker için çoğu hata ayıklama tarifinde, birinin dist/ klasörünü bir konteyner hacmi olarak bağladığı varsayılıyor. Ben yalnızca src/ klasörünü bağlıyorum ve Typescript'i konteyner içinde derliyorum ve bunun launch.json konfigürasyonumu nasıl etkileyeceğinden tam olarak emin değilim. Sadece konteyner içinde derlediğim göz önüne alındığında, konfigürasyonumda bir şey mi eksik? VSCode bunu bile destekleyebilir mi? Belgeler bu konuda çok net değil.

Benim npm start betiğim:

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

Benim tsconfig.json dosyam:

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

Benim launch.json hata ayıklayıcı yapılandırmam:

{
  "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"
      ]
    }
  ]
}

Hata ayıklayıcıyı başlattığımda, bağlanıyor gibi görünüyor (hata ayıklama konsolunda kapsayıcı günlüklerini alıyorum), ama sonra kesme noktalarım her zaman bağlanmamış oluyor, bu yüzden bunun mount/derleme ayarlarımla ilgili bir sorun mu yoksa her şeyin yolunda olup sadece VSCode'un kesme noktalarını bağlayamaması mı emin değilim.

Her türlü yardım çok takdir edilir!

Cevap #1

Docker konteynerinizden 9229 numaralı portu açtınız mı? İşte benim docker-compose dosyamdan bir örnek.

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