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

Golang服务器Docker部署遇可执行文件找不到错误,如何修改Dockerfile?

解决Golang服务Docker部署的可执行文件找不到问题

问题原因

编译生成的可执行文件golang-server被放在了根目录/,但Docker容器的默认$PATH不包含根目录,所以CMD ["golang-server"]无法定位到该执行文件。

解决方案

方案1:指定可执行文件的绝对路径

修改Dockerfile的CMD指令,直接使用编译后文件的绝对路径:

FROM golang:1.18

WORKDIR $GOPATH/src

COPY . .

RUN go mod download
RUN go build -o /golang-server

EXPOSE 8080

CMD ["/golang-server"]

方案2:将可执行文件放入$PATH包含的目录

把编译后的文件输出到/usr/local/bin(该目录默认在$PATH中),这样直接用文件名即可调用:

FROM golang:1.18

WORKDIR $GOPATH/src

COPY . .

RUN go mod download
RUN go build -o /usr/local/bin/golang-server

EXPOSE 8080

CMD ["golang-server"]

方案3:使用多阶段构建(推荐,缩小镜像体积)

官方Golang镜像体积较大,通过多阶段构建只保留最终可执行文件,大幅减少镜像大小:

# 第一阶段:编译代码
FROM golang:1.18 AS builder

WORKDIR /app

COPY . .

RUN go mod download
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o golang-server .

# 第二阶段:运行服务,使用轻量镜像
FROM alpine:latest

RUN apk --no-cache add ca-certificates

WORKDIR /root/

COPY --from=builder /app/golang-server .

EXPOSE 8080

CMD ["./golang-server"]

验证命令

修改Dockerfile后,重新构建并运行:

docker build . -t golang-server 
docker run --network=golang-server --name=golang-server golang-server

内容的提问来源于stack exchange,提问作者Bill Software Engineer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 12:30:58