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

Docker-Compose运行entrypoint.sh遇exec格式错误的解决求助

解决Docker entrypoint.sh "exec format error"问题

以下是几种实用的修复方案,按优先级尝试:

1. 给entrypoint.sh添加shebang头

你的脚本缺少解释器声明,Docker无法识别正确的运行环境。在脚本第一行添加指定解释器的shebang:

#!/bin/bash

完整脚本如下:

#!/bin/bash
flask db upgrade

supervisord -c /config/supervisord.conf

2. 确保脚本拥有可执行权限

先给本地的entrypoint.sh添加执行权限:

chmod +x ./server/entrypoint.sh

同时建议在Dockerfile中加入权限配置,避免构建镜像时丢失权限:

COPY entrypoint.sh .
RUN chmod +x entrypoint.sh

3. 修复镜像架构不兼容问题

如果确实是运行环境与镜像架构不匹配(比如Apple Silicon芯片运行x86架构镜像),可通过以下方式处理:

  • 在docker-compose.yml的server服务中添加平台声明:
server:
  # 其他配置保持不变
  platform: linux/amd64  # 或linux/arm64,根据你的运行环境选择
  • 重新构建镜像时指定目标平台:
docker build --platform linux/amd64 -t flask_app:v0.30 ./server

4. 移除重复的ENTRYPOINT配置

你的Dockerfile和docker-compose.yml同时设置了ENTRYPOINT,可能引发冲突。建议只保留一处配置,比如删除docker-compose.yml中的entrypoint: ./entrypoint.sh,让Dockerfile的配置生效。

5. 转换脚本换行符格式

如果是在Windows环境编写的脚本,换行符可能是CRLF格式,Linux容器无法识别。可用命令转换为LF格式:

sed -i 's/\r$//' ./server/entrypoint.sh

也可以在编辑器(如VS Code)中直接将文件换行符设置为LF。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 19:00:30