我正在尝试在Alpine Docker镜像中安装Go。为此,我从我的alpine docker镜像中的here下载了tar文件,使用以下命令解压缩它:
tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz
导出的PATH使二进制文件变为:
export PATH=$PATH:/usr/local/go/bin
然而,当我说go version
时,它说sh: go: not found
。我对阿尔卑斯山很陌生。有谁知道,我在这里错过了什么?
复制的步骤-
$ docker run -it alpine sh
$ wget https://dl.google.com/go/go1.10.3.linux-amd64.tar.gz
$ tar -C /usr/local -xzf go1.10.3.linux-amd64.tar.gz
$ export PATH=$PATH:/usr/local/go/bin
$ go version
9条答案
按热度按时间nwlqm0z11#
我只是复制它使用多阶段建设,似乎是确定到目前为止
uyto3xhc2#
下面的Dockerfile为我工作。更简单,更抽象。
来源:https://raw.githubusercontent.com/mickep76/alpine-golang/master/Dockerfile
u4vypkhs3#
谢谢BMitch。
我编译了go源代码,并在alpine image容器中执行了以下步骤。
zphenhs44#
在Alpine中,使用libmusl而不是glibc。Alpine的libmusl不是一对一的替代品。链接到glibc的代码将显示一个实际上来自动态链接器的未找到错误。你可以用ldd看到哪些库被链接到二进制文件:
有两个选择。首选选项,也是Alpine上docker的go镜像使用的选项,是在Alpine上编译go二进制文件。你可以在golang镜像的Dockerfile中看到:https://github.com/docker-library/golang/blob/69f2d2a132565bf60afc91813801a3bdcc981526/1.10/alpine3.8/Dockerfile
另一个选择是在Alpine上安装glibc,但是一旦你开始这样做,我会质疑为什么要使用Alpine,Debian还是CentOS更适合你。Alpine有一个wiki topic on this,还有third parties that have created glibc packages for alpine。
t1qtbnec5#
我发现让
golang
在alpine linux上运行的最好方法是从源代码安装它。这也是在官方的阿尔卑斯山去 Docker 图像遵循的方式。lzfw57am6#
如果基本要求是在基于alpine的docker镜像中安装特定的go版本,请参考golang dockerhub官方账户上的images。
toe950277#
以防有人遇到同样的问题。
我能够安装golang1. 17. 6离子Alpine3. 15通过以下@Yogesh Jilhawar的答案。
当我运行
apk add --no-cache --virtual .build-deps bash gcc musl-dev openssl go
命令时,我得到然后我试着安装"gcc-go",它安装.在那之后,我可以从源头上成功地构建Golang。
wwodge7n8#
Dockerfile
:avkwfej49#
有阿尔卑斯山包,与golang的最新版本:
pkg --update add go