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

Docker Compose up执行报错退出码2,寻求技术解决方案

问题分析与解决方案

核心错误定位

报错/bin/sh: 1: [: missing ]是shell条件判断语法错误,通常是[命令缺少闭合的],或者变量引用未加引号导致参数解析异常。容器反复退出(code 2)是因为restart: always配置导致失败后自动重启。

分步修复

1. 修正Docker Compose网络配置

你的docker-compose.yml中networks部分格式错误,正确的外部网络引用应该将external嵌套在default网络下:

networks:
  default:
    external:
      name: lafs-net

原写法会被解析为两个独立网络,可能导致容器网络连接异常,间接引发启动问题。

2. 排查并修复shell脚本语法错误

  • 检查项目中所有shell脚本(如entrypoint.sh)或package.json里的start命令,找到包含[的条件判断语句:
    • 确保每个[都有对应的],比如if [ -f file.txt ]; then不能写成if [ -f file.txt then;
    • 变量引用必须加双引号,避免变量为空时语法出错,比如将[ $DB_HOST = "mongo" ]改为[ "$DB_HOST" = "mongo" ]。
  • 若之前使用npm run start启动,优先检查package.json的scripts.start配置,确认其包含的命令无语法错误。

3. 辅助排查步骤

  • 临时移除docker-compose.yml中app服务的restart: always配置,避免容器反复重启,方便查看完整的启动日志;
  • 在本地直接启动项目(node server/server.js或npm start),确认项目本身能正常运行,排除代码逻辑问题;
  • 考虑升级Node.js版本:你使用的node:10已停止维护,建议更换为node:16或node:18镜像,减少兼容性隐患。

验证修复

修改完成后,执行以下命令重新启动:

docker-compose down
docker-compose up --build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:10:35