javascript - NestJS bir istek aldığında takılıyor. Docker donuyor ve konteyneri durdurmak, öldürmek veya kaldırmak mümkün olmuyor
Bağlam: NestJS, docker ortamında veritabanı (mysql) ve redis konteynerleri ile birlikte çalışıyor. Aynı kod tabanının iki konteyner olarak çalıştırıldığı iki ayrı konteyner var: app ve worker.
Mevcut Paket JSON
{
"name": "backend",
"version": "0.0.1",
"description": "",
"author": "",
"private": true,
"license": "UNLICENSED",
"scripts": {
"prebuild": "rimraf dist",
"build": "nest build",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
"start": "nest start",
"start:dev:core": "nest start --watch",
"start:dev:worker": "nest start --config nest-cli-worker.json --watch",
"start:debug": "nest start --debug --watch",
"start:prod:core": "pm2-runtime start pm2.yaml --env production --node-args='-r newrelic'",
"start:prod:worker": "pm2-runtime start pm2-worker.yaml --env production",
"lint": "eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"test": "jest",
"test:watch": "jest --watch",
"test:cov": "jest --coverage",
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
"test:e2e": "NODE_ENV='test' jest --config ./test/jest-e2e.json --detectOpenHandles",
"pm2:delete": "pm2 delete adxl-app"
},
"dependencies": {
"@casl/ability": "^6.3.3",
"@golevelup/ts-jest": "^0.3.3",
"@googleapis/content": "^11.0.0",
"@googlemaps/google-maps-services-js": "^3.3.26",
"@mikro-orm/cli": "^5.7.4",
"@mikro-orm/core": "^5.7.4",
"@mikro-orm/migrations": "^5.7.4",
"@mikro-orm/mysql": "^5.7.4",
"@mikro-orm/nestjs": "^5.1.8",
"@mikro-orm/reflection": "^5.7.4",
"@mikro-orm/seeder": "^5.7.4",
"@nestjs-modules/mailer": "^1.6.1",
"@nestjs/axios": "2.0.0",
"@nestjs/bull": "^0.5.4",
"@nestjs/common": "^8.0.0",
"@nestjs/config": "^2.3.1",
"@nestjs/core": "^8.0.0",
"@nestjs/event-emitter": "^1.1.1",
"@nestjs/jwt": "^8.0.0",
"@nestjs/mapped-types": "*",
"@nestjs/passport": "^8.2.1",
"@nestjs/platform-express": "^8.0.0",
"@nestjs/schedule": "^2.0.1",
"@nestjs/throttler": "^3.1.0",
"@nestlab/google-recaptcha": "^3.3.0",
"@types/lodash": "^4.14.184",
"@types/newrelic": "^9.7.0",
"aws-sdk": "^2.1085.0",
"bcrypt": "^5.0.1",
"body-parser": "^1.19.2",
"buffer": "^6.0.3",
"bull": "^4.8.1",
"cheerio": "^1.0.0-rc.11",
"class-transformer": "^0.5.1",
"class-validator": "^0.13.2",
"compression": "^1.7.4",
"cookie-parser": "^1.4.6",
"csv-parse": "^5.3.3",
"fluent-ffmpeg": "^2.1.2",
"form-data": "^4.0.0",
"google-ads-api": "^12.0.1",
"handlebars": "^4.7.7",
"ioredis": "^5.2.3",
"js-sha256": "^0.9.0",
"json2csv": "^5.0.7",
"lodash": "^4.17.21",
"md5": "^2.3.0",
"moment": "^2.29.1",
"moment-timezone": "^0.5.34",
"ncsrf": "^1.0.3",
"nest-commander": "^2.5.0",
"nest-winston": "^1.8.0",
"nestjs-stripe": "^1.0.0",
"nestjs-twilio": "^2.2.1",
"newrelic": "^9.7.0",
"node-fetch": "^2.6.7",
"nodemailer": "^6.7.5",
"oauth-1.0a": "^2.2.6",
"openai": "^3.2.1",
"passport": "^0.5.2",
"passport-jwt": "^4.0.0",
"passport-local": "^1.0.0",
"pexels": "^1.4.0",
"pm2": "^5.2.0",
"puppeteer": "^19.11.1",
"pusher": "^5.1.1-beta",
"reflect-metadata": "^0.1.13",
"rimraf": "^3.0.2",
"rxjs": "^7.5.4",
"stripe": "^8.222.0",
"ts-node": "^10.0.0",
"twilio": "^3.77.3",
"twitter-api-sdk": "^1.2.1",
"uuid": "^8.3.2",
"voucher-code-generator": "^1.3.0",
"winston": "^3.8.2"
},
"devDependencies": {
"@nestjs/cli": "^8.0.0",
"@nestjs/schematics": "^8.0.0",
"@nestjs/testing": "^8.0.0",
"@types/bull": "^3.15.8",
"@types/cookie-parser": "^1.4.2",
"@types/cron": "^2.0.0",
"@types/express": "^4.17.13",
"@types/jest": "^27.0.1",
"@types/multer": "^1.4.7",
"@types/node": "^16.0.0",
"@types/passport-jwt": "^3.0.6",
"@types/passport-local": "^1.0.34",
"@types/puppeteer": "^7.0.4",
"@types/supertest": "^2.0.12",
"@typescript-eslint/eslint-plugin": "^4.28.2",
"@typescript-eslint/parser": "^4.28.2",
"eslint": "^7.30.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0",
"jest": "^27.0.6",
"prettier": "^2.3.2",
"run-script-webpack-plugin": "^0.1.1",
"supertest": "^6.3.0",
"ts-jest": "^27.0.3",
"ts-loader": "^9.2.3",
"tsconfig-paths": "^3.10.1",
"typescript": "^4.7.4",
"webpack": "^5.75.0",
"webpack-node-externals": "^3.0.0"
},
"mikro-orm": {
"useTsNode": true,
"configPaths": [
"./mikro-orm.config.ts"
]
},
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"setupFiles": [
"<rootDir>/../test/setEnvVars.ts"
],
"rootDir": "src",
"testRegex": ".*\\.spec\\.ts$",
"transform": {
"^.+\\.(t|j)s$": "ts-jest"
},
"collectCoverageFrom": [
"**/*.(t|j)s"
],
"coverageDirectory": "../coverage",
"testEnvironment": "node"
}
}
Uygulama aniden takılıyor ve herhangi bir hata mesajı vermiyor. Docker masaüstü sürecini sonlandırıp Docker masaüstünü yeniden başlattıktan sonra kaldırmazsam docker konteynerini durduramıyorum. Değişiklikleri yeniden yükleyemiyorum vb.
Bu mevcut tsconfig.json dosyasıdır
{
"compilerOptions": {
"module": "commonjs",
"declaration": true,
"removeComments": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"allowSyntheticDefaultImports": true,
"target": "es2018",
"sourceMap": true,
"outDir": "./dist",
"baseUrl": "./",
"incremental": false,
"skipLibCheck": true,
"strictNullChecks": false,
"noImplicitAny": false,
"strictBindCallApply": false,
"forceConsistentCasingInFileNames": false,
"noFallthroughCasesInSwitch": false,
"esModuleInterop": true,
"resolveJsonModule": true,
"typeRoots": [
"node_modules/@types",
"src/typings"
]
},
"watchOptions": {
"watchFile": "fixedpollinginterval",
}
}
Hata ayıklama günlüklerini açtım, hiçbir şey görünmüyor. Sadece takılıyor. Yeniden kurdum, Docker Desktop'u eski sürüme düşürdüm, farklı birçok WSL2 Linux dağıtımını denedim, dist klasörünü temizledim, node_modules'u sildim, tüm Docker kaynaklarını kaldırdım ve Docker imajlarını 20'den fazla kez yeniden inşa ettim.
Asıldıktan sonra, konteynerleri durduruyorum, docker-compose top yapıyorum, işte çıktı:
app
UID PID PPID C STIME TTY TIME CMD
root 10926 10612 21 May04 ? 00:05:11 [node] <defunct>
root 11120 10612 1 May04 ? 00:00:19 node -r source-map-support/register --inspect /usr/src/app/dist/src/main
database
UID PID PPID C STIME TTY TIME CMD
999 10338 10317 0 May04 ? 00:00:01 mysqld
worker
UID PID PPID C STIME TTY TIME CMD
root 10914 10613 20 May04 ? 00:05:04 [node] <defunct>
root 11131 10613 1 May04 ? 00:00:17 node -r source-map-support/register /usr/src/app/dist/src/worker
Sebep ne olabilir? Bu sorunun nereden kaynaklandığından emin değilim.