Node.js+TypeScript API本地正常运行,Docker容器启动后立即退出
容器启动后立即退出的原因及解决办法
核心问题:CMD指令参数格式错误
你在Dockerfile中使用的数组形式CMD存在参数拆分错误:
# 错误写法 CMD [ "node", "--experimental-specifier-resolution=node", "--loader", "ts-node/esm src/app.ts" ]
在数组格式的CMD中,每个命令参数必须作为独立的数组元素。上述写法会把ts-node/esm src/app.ts整体当作--loader的参数,Node.js无法识别这个不存在的loader模块,导致进程直接终止(状态码0是Node正常终止错误执行的表现)。
修正后的CMD指令
将参数正确拆分,把src/app.ts作为单独的命令参数:
CMD [ "node", "--experimental-specifier-resolution=node", "--loader", "ts-node/esm", "src/app.ts" ]
额外检查点
- 确保容器内依赖安装完整:
npm install需要在容器内正常完成,因为你直接用ts-node运行TS文件,容器中必须存在ts-node及相关依赖。如果是生产环境,建议先将TS编译为JS再构建镜像,避免依赖开发工具。 - 确认应用监听地址:确保API代码中监听的是
0.0.0.0而非localhost,否则容器外部无法访问(虽然这不会导致容器退出,但也是Docker化的常见注意事项)。
内容的提问来源于stack exchange,提问作者pcace
相关产品推荐
相关产品推荐

