Apple M1芯片下GKE运行Docker镜像时gunicorn报Exec format error求解决
解决GKE中“exec /usr/local/bin/gunicorn exec format error”错误
问题根源
MacBook M1 Pro搭载ARM64架构,默认构建的Docker镜像是ARM64版本,但GKE的Worker节点大多采用x86_64(AMD/Intel)架构,跨架构运行二进制文件会触发执行格式不兼容错误。
解决方法
构建多架构镜像
使用Docker Buildx构建同时支持x86_64和ARM64的镜像,推送后GKE会自动匹配节点架构:# 初始化Buildx环境(首次使用执行) docker buildx create --use # 构建并推送多架构镜像,替换为你的仓库地址和标签 docker buildx build --platform linux/amd64,linux/arm64 -t your-image-repo:tag --push .强制构建x86_64架构镜像
如果仅需在GKE的x86节点运行,直接指定架构构建:docker build --platform linux/amd64 -t your-image-repo:tag . docker push your-image-repo:tag修改Dockerfile指定基础镜像架构
在FROM指令中明确选择x86_64版本的Python基础镜像:FROM python:3.7-amd64 WORKDIR /app COPY . /app RUN pip install -r requirements.txt EXPOSE 80 ENTRYPOINT ["gunicorn", "-w", "2", "-b", ":80", "main:app", "--timeout", "300"]完成修改后正常构建并推送镜像即可。
验证
推送新镜像后,重新部署GKE Pod,查看Pod日志确认错误已消除。
内容的提问来源于stack exchange,提问作者talkandtalkers
相关产品推荐
相关产品推荐

