尝试构建Docker镜像时,出现“$PATH中找不到可执行文件gcc”的错误。

12

我在Windows上有gcc。

C:\Users\jkrov>gcc --version
gcc (MinGW.org GCC-8.2.0-5) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

我的Docker文件:

FROM golang:alpine
RUN mkdir /app
WORKDIR /app
ADD . /app
RUN go build -o main .
EXPOSE 8080
CMD [ "app/main" ]

当我尝试构建图像时出现错误:

exec: "gcc": executable file not found in $PATH

你正在使用Docker工具箱吗? - Alexander Santos
是的,我正在使用。 - Janis Lange
我认为 Docker Toolbox 将环境与 Virtual Box 的镜像分离。所以你可能需要在这个镜像内安装 gcc,也许通过 docker 安装 gcc 可以解决这个问题。(我不确定这是否是真正的问题,你可以尝试在 docker 中回显 $PATH)。我知道 Docker Toolbox 有一个限制,只能访问 Virtual Box 上的共享驱动器(默认只允许 C:\Users),我不确定指向 gcc 是否会对你有帮助。 - Alexander Santos
3
Docker是一个隔离系统(在您的情况下也运行在虚拟机内),因此它不知道并且无法使用安装在主机上的软件。如果您需要gcc,则需要将其安装在映像中。包括应用程序源代码的[最小可复现示例]将非常有帮助;我预计基本的Go应用程序不需要这个。 - David Maze
1
我同意@DavidMaze的观点,我认为alpine没有gcc。所以我认为你有两个选择: 使用apk add build-base安装gcc 或者 不使用CGO,因此设置环境变量CGO_ENABLED=0 - northsideknight
显示剩余2条评论
3个回答

26

在使用alpine镜像构建go应用时,我遇到了相同的问题。安装gcc解决了这个问题。以下是Dockerfile的示例:

FROM golang:alpine
RUN apk add build-base
RUN mkdir /app
WORKDIR /app
ADD . /app
RUN go build -o main .
EXPOSE 8080
CMD [ "app/main" ]

你知道是否有一个类似于alpine的精简golang镜像,其中已经捆绑了gcc吗? - Roy Levy

11

添加gcc工具修复了问题。

RUN apk add build-base

还可以这样做:

RUN apk --no-cache add make git gcc libtool musl-dev ca-certificates dumb-init 

0

这对我有用:

添加

CGO_ENABLED=0 GOOS=linux GOARCH=amd64

运行

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o main ./

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接