使用skaffold dev命令时ts-node-dev无法正常运行求助
问题解决:Skaffold Dev下ts-node-dev被SIGKILL终止且文件同步失效
核心问题分析
- SIGKILL终止原因:Deployment配置中容器内存限制仅
128Mi,ts-node-dev编译TypeScript时内存需求超出配额,触发OOM(内存不足)被系统发送SIGKILL信号终止,导致容器反复重启。 - 文件同步失效:Skaffold同步规则需与容器内工作目录匹配,同时Dockerfile配置需确保本地代码正确复制到容器内。
分步解决方案
1. 调整容器资源配额
修改infra/k8s/auth-depl.yaml,提升内存与CPU限制,同时添加资源请求配额让K8s合理分配资源:
spec: containers: - name: auth-app # 保留原有端口、镜像等配置 resources: limits: memory: "512Mi" cpu: "0.5" requests: memory: "256Mi" cpu: "0.2"
2. 优化Skaffold同步规则
更新skaffold.yaml的同步配置,添加强制覆盖参数确保文件同步生效:
build: artifacts: - image: gauri65/auth # 保留原有context、dockerfile配置 sync: manual: - src: "src/**/*.ts" dest: "." override: true
3. 修正Dockerfile配置(关键)
确保Dockerfile设置了正确的工作目录,且完整复制代码文件,示例参考:
FROM node:18-alpine WORKDIR /app COPY package*.json ./ RUN npm install COPY . . CMD ["npm", "start"]
注意:检查
.dockerignore文件,确保未排除src目录,否则本地代码无法复制到容器内。
4. 提升Node.js内存限制
修改package.json的启动脚本,添加内存限制参数:
{ "scripts": { "start": "ts-node-dev --max-old-space-size=256 src/index.ts --poll" } }
验证流程
- 终止当前
skaffold dev进程 - 执行
skaffold delete清理现有集群资源 - 重新运行
skaffold dev,观察容器是否稳定启动;修改本地src目录下的.ts文件,检查容器内代码是否同步更新
内容的提问来源于stack exchange,提问作者Gaurav Bhatt
相关产品推荐
相关产品推荐

