Jua*_*gés 2 typescript docker docker-compose nestjs
所以我已经使用 docker-compose 在 NestJS 和 Docker 上开发这个后端大约 6 个月了,但从来没有遇到过我的 docker 不监听我的文件更改的问题。几天前,这种情况开始发生,我不知道为什么。
\n这是我的 Dockerfile
\nFROM node:14-alpine\n\nENV NODE_ENV development\n\nENV NODE_OPTIONS=--max_old_space_size=8192\n\nRUN mkdir -p /usr/src/app\n\nWORKDIR /usr/src/app\n\nCOPY . .\n\nRUN yarn install\n\nENTRYPOINT ["yarn", "start:dev"]\nRun Code Online (Sandbox Code Playgroud)\n这是我的 docker-compose 文件
\nservices:\n api:\n image: cacao-be\n container_name: cacao-be-api\n build:\n context: .\n dockerfile: Dockerfile\n ports:\n - '3000:3000'\n depends_on:\n - postgres\n volumes:\n - ./src:/usr/src/app/src\n networks:\n - default\n links:\n - redis\n env_file:\n - .env\nvolumes:\n db_data:\n admin_data:\n redis_data:\n driver: local\nRun Code Online (Sandbox Code Playgroud)\n这是我的 package.json,其中包含启动我的项目的脚本
\n"scripts": {\n "prebuild": "rimraf dist",\n "build": "nest build",\n "format": "prettier --write \\"src/**/*.ts\\" \\"test/**/*.ts\\"",\n "start": "nest start",\n "start:dev": "nest start --watch"\n}\nRun Code Online (Sandbox Code Playgroud)\n这里\xc2\xb4s也是我的tsconfig文件
\n{\n "compilerOptions": {\n "jsx": "react",\n "module": "commonjs",\n "declaration": true,\n "removeComments": true,\n "emitDecoratorMetadata": true,\n "experimentalDecorators": true,\n "allowSyntheticDefaultImports": true,\n "esModuleInterop": true,\n "target": "es2017",\n "sourceMap": true,\n "outDir": "./dist",\n "baseUrl": "./",\n "incremental": true,\n "resolveJsonModule": true,\n "skipLibCheck": true,\n},\n}\n\nRun Code Online (Sandbox Code Playgroud)\n和 tsconfig.build.json 文件
\n{\n "extends": "./tsconfig.json",\n "exclude": ["node_modules", "test", "dist", "**/*spec.ts"]\n}\nRun Code Online (Sandbox Code Playgroud)\n我尝试在没有 docker 的情况下运行我的项目,它确实监听文件更改,但是当我在 docker 中运行它时,它停止监听它们。我已经验证过,在这两种方法中它都以监视模式运行。\nStarting compilation in watch mode...
另外,我已经通过cmd进入我的容器,并检查文件在我修改它们时是否发生变化,并且它们确实发生了变化(我可以证明我的服务安装良好)。所以容器内部的文件发生了变化,但它并没有重新启动开发
\n我已经设置了
\ncommand: npm run start:dev\nRun Code Online (Sandbox Code Playgroud)\n在我的 docker-compose 文件中,但它不起作用。清理我的泊坞窗并重新启动它也不起作用。
\n我期望的是,当我保存文件时,我的 docker 日志会重新启动并应用更改。
\n很抱歉参加聚会迟到了。实际上这是由于TypeScript版本造成的。如果你把它升级到4.9,那么它就不再起作用了。因为在 中4.9,他们更改了监视文件的方式,并且现在使用 FS 事件而不是传统轮询。你可以在这里读更多关于它的内容。因此,如果您想让它再次工作,请4.8.4暂时使用。在您的 中,像这样package.json更改版本:typescript
{
...
"devDependencies": {
...
"typescript": "~4.8.4",
...
},
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2200 次 |
| 最近记录: |