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

Windows下Go Web应用Docker部署遇exec format error错误求助

解决Docker部署Go Web应用时的exec /app/main: exec format error问题

问题根源

你在Windows环境下直接执行go build生成的是Windows平台的可执行文件(PE格式),但Docker容器基于Linux镜像,只能运行Linux平台的ELF格式二进制文件,因此出现格式不兼容错误。

解决方法

方法1:利用现有Makefile完成跨平台编译

你的Makefile已经配置了Linux平台的编译参数,直接用它编译即可:

  1. 删除之前生成的Windows版本可执行文件(Windows下直接删除bin/main文件)
  2. 执行编译命令:
    make build
    
  3. 重新构建并运行容器:
    docker build -t tiny .
    docker run -p 127.0.0.1:8080:8080 tiny
    

方法2:手动指定环境变量编译

如果不想用Makefile,在Windows终端中手动设置跨平台编译参数:

SET GOOS=linux
SET GOARCH=amd64
go build -o bin/main main.go

完成后再执行docker build和docker run命令。

方法3:使用Docker多阶段构建(推荐)

修改Dockerfile为多阶段构建,直接在容器内完成编译,彻底避免本地环境差异问题:

# 第一阶段:编译Go程序
FROM golang:latest AS builder
WORKDIR /app
COPY . .
# 禁用CGO并指定Linux平台编译
RUN CGO_ENABLED=0 GOOS=linux go build -o main main.go

# 第二阶段:生成轻量运行镜像
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]

执行以下命令完成部署:

docker build -t tiny .
docker run -p 127.0.0.1:8080:8080 tiny

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:50:24