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

使用flyctl部署Fly.io应用失败:Kernel报错Attempted to kill init!

Fly.io部署报错“Kernel: not syncing: Attempted to kill init! exitcode=0x00000100”解决方法

问题根源分析

你的fly.toml配置存在核心矛盾:

  • [build]指定的镜像flyio/hellofly:latest是Go语言的示例镜像,无Node.js运行环境
  • [processes]里的启动命令node app.js、[deploy]的release_command = "npm run build"都依赖Node.js环境,在Go镜像中无法执行,直接导致初始化进程崩溃,触发内核报错。

修复步骤

1. 替换基础镜像

将fly.toml中[build]的镜像替换为Node.js官方镜像,推荐轻量的生产版本:

[build]
  image = "node:18-alpine"

如果项目需要特定Node.js版本,替换为对应版本号即可(如node:20-slim)。

2. 用Dockerfile管控构建流程(推荐)

仅替换镜像无法加载你的项目代码和依赖,建议添加Dockerfile完整控制构建逻辑,示例如下:

# 构建阶段
FROM node:18-alpine AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# 生产阶段
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/package*.json ./
COPY --from=builder /app/build ./build
COPY --from=builder /app/app.js ./
RUN npm ci --only=production
EXPOSE 8080
CMD ["node", "app.js"]

然后修改fly.toml的[build]部分,指定使用Dockerfile构建:

[build]
  dockerfile = "Dockerfile"

3. 清理冗余配置

使用上述Dockerfile时,构建步骤已在镜像构建阶段完成,无需保留release_command,可删除[deploy]区块:

# 移除该部分
[deploy]
  release_command = "npm run build"

4. 验证端口一致性

确认[services]里的internal_port = 8080和你的Node应用监听端口完全匹配,启动命令node app.js能正常拉起服务。

重新部署

修改完成后,执行命令重新部署:

flyctl deploy

内容的提问来源于stack exchange,提问作者Julius Goddard

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 02:15:38