运行docker-compose报exited with code 243错误 附Dockerfile求解决方案
Docker 容器异常退出报 exited with code 243 修复方案
Exit code 243 遵循Linux标准退出码规则,计算方式为128 + 15,代表容器内主进程收到SIGTERM终止信号后退出,结合你给出的Dockerfile配置,问题点和修复方式如下:
- 启动命令写法错误
你当前配置的CMD npm run start --prefix ./存在两个问题:一是已经通过WORKDIR /app指定了工作目录,--prefix ./属于冗余参数,部分npm版本下会因为路径解析异常找不到start脚本;二是shell格式的CMD会让npm进程作为sh的子进程运行,无法正确接收Docker传递的信号,极易触发异常退出。
修正为exec格式启动命令:CMD ["npm", "run", "start"] - Dockerfile缺失核心构建步骤
现有配置只复制了env目录下的环境变量文件,既没有复制package.json等依赖描述文件、业务代码,也没有执行依赖安装命令,容器启动时npm根本找不到对应的启动脚本和依赖包,直接触发进程退出。
补全后的完整Dockerfile参考:FROM node:16 ARG stage RUN mkdir -p /app WORKDIR /app # 优先复制依赖文件,复用Docker构建缓存 COPY package*.json ./ # 安装生产环境依赖,根据你的项目实际需求调整安装参数 RUN npm ci --only=production # 复制环境变量文件 COPY ./env/${stage}.env . COPY ./env/test.env . # 复制剩余业务代码 COPY . . EXPOSE 3000 CMD ["npm", "run", "start"] - ARG参数未正确传递
Dockerfile中声明的ARG stage属于构建期参数,如果在docker-compose配置中没有传入对应参数值,构建阶段执行COPY ./env/${stage}.env .时会因为找不到对应文件报错,部分Docker版本下该错误不会中断构建,会导致容器启动时缺少必要环境变量,服务启动失败退出。
需要在docker-compose.yml的build配置中补全参数传递:services: your-node-service: build: context: . args: stage: prod # 替换为你实际部署的环境标识 - 残留问题排查方式
如果以上配置调整后仍然出现243退出码,直接执行docker logs <你的容器ID>查看Node进程输出的具体错误日志,243仅为信号类退出码,代码语法错误、端口占用、环境变量缺失等业务层错误都会触发该退出码,具体根因以容器日志输出为准。
内容的提问来源于stack exchange,提问作者Maksic
相关产品推荐
相关产品推荐

