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

Windows下Docker部署Golang应用遇exec格式错误求助

解决Docker运行Golang应用时的exec format error问题

针对你遇到的exec /app/server: exec format error报错,即使指定了--platform=linux/amd64仍未解决,可尝试以下排查和修复步骤:

  • 确认构建命令的平台参数正确
    执行构建时务必完整传递平台参数,同时清理旧缓存避免干扰:

    docker build --platform linux/amd64 --no-cache -t your-app-name .
    
  • 验证二进制文件的架构
    构建完成后,运行以下命令检查产物是否为amd64架构:

    docker run --rm --platform linux/amd64 alpine:latest file /app/server
    

    正常输出应包含ELF 64-bit LSB executable, x86-64,若显示其他架构(如aarch64),说明Go构建的环境变量未生效。

  • 调整Dockerfile中Go构建的环境变量设置
    Windows的CMD/PowerShell不支持CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build这种连续环境变量写法,建议在builder阶段提前设置环境变量:

    FROM --platform=linux/amd64 golang:1.21-bookworm as builder
    
    WORKDIR /app
    
    COPY ./src/. ./
    RUN go mod download
    
    # 提前设置Go构建环境变量
    ENV CGO_ENABLED=0
    ENV GOARCH=amd64
    ENV GOOS=linux
    
    RUN go build -v -o server ./cmd/main.go
    
    FROM --platform=linux/amd64 debian:bookworm-slim
    RUN set -x && apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \
        ca-certificates && \
        rm -rf /var/lib/apt/lists/*
    
    COPY --from=builder /app/server /app/server
    
    RUN chmod +x /app/server
    
    CMD ["/app/server"]
    
  • 检查WSL后端架构(Windows 11)
    若使用WSL 2作为Docker后端,确保默认WSL分发版为x86_64架构:

    1. 在PowerShell中执行wsl -l -v查看分发版列表
    2. 若存在arm64架构的实例,切换到amd64的分发版并设置为默认:
      wsl --set-default Ubuntu-22.04
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 21:53:19