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

Amazon EC2部署Spring Boot+React应用前端Docker启动失败排查

排查React容器「exec /usr/local/bin/docker-entrypoint.sh: exec format error」错误

1. 镜像架构不匹配(最常见原因)

EC2实例的CPU架构与构建React镜像时的架构不一致,会触发这类执行格式错误:

  • 检查EC2实例架构:登录实例执行 uname -m,输出如x86_64(Intel/AMD)或aarch64(AWS Graviton)
  • 检查镜像架构:在本地或ECR执行 docker inspect <react-image-tag> | grep -i architecture
  • 解决方法:
    • 构建镜像时指定对应平台,比如针对x86_64实例:
      docker build --platform linux/amd64 -t your-react-image .
      
    • 若用Dockerfile,可在开头添加架构声明:
      FROM --platform=linux/amd64 node:<your-node-version>
      

2. Entrypoint脚本格式/权限问题

  • 换行符不兼容:如果脚本在Windows环境编写,会带有CRLF换行符,Linux无法识别:
    • 排查:进入临时容器执行 cat -A /usr/local/bin/docker-entrypoint.sh,看每行结尾是否有^M标识
    • 解决:在Dockerfile中添加转换步骤:
      RUN sed -i 's/\r$//' /usr/local/bin/docker-entrypoint.sh
      
  • 执行权限缺失:脚本没有可执行权限会导致无法启动:
    • 解决:在Dockerfile中添加权限配置:
      RUN chmod +x /usr/local/bin/docker-entrypoint.sh
      

3. Dockerfile Entrypoint配置错误

检查React的Dockerfile中ENTRYPOINT指令是否正确:

  • 确保路径指向正确的脚本,优先使用exec格式避免shell环境干扰:
    ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
    
  • 避免错误的shell格式配置(如ENTRYPOINT /usr/local/bin/docker-entrypoint.sh),这类配置可能引发环境变量或执行上下文问题

4. 部署配置文件冲突

  • docker-compose.yml:检查是否覆盖了容器的entrypoint/command字段,比如command: bash这类配置会跳过原entrypoint脚本执行
  • Dockerrun.aws.json:确认Image字段指定的镜像标签正确,且镜像已推送到对应区域的ECR;若使用containerDefinitions,检查entryPoint配置是否与镜像内置的entrypoint一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:32:36