You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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"
  }
}

验证流程

  1. 终止当前skaffold dev进程
  2. 执行skaffold delete清理现有集群资源
  3. 重新运行skaffold dev,观察容器是否稳定启动;修改本地src目录下的.ts文件,检查容器内代码是否同步更新

内容的提问来源于stack exchange,提问作者Gaurav Bhatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 14:58:30