go在alpine系统采用的so不同导致的
情况:由于alpine镜像使用的是musl libc而不是gnu libc,/lib64/ 是不存在的。但他们是兼容的,可以创建个软连接过去.
解决:
mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
FROM alpine:3.11
RUN mkdir /go
RUN cd /go \
&& wget https://golang.google.cn/dl/go1.15.7.linux-amd64.tar.gz \
&& tar -C /usr/local -zxf go1.15.7.linux-amd64.tar.gz \
&& rm -rf /go/go1.15.7.linux-amd64.tar.gz \
&& mkdir /lib64 \
&& ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
# mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
# 是因为go在alpine系统采用的so不同导致的; 可以用 ldd go查看原因
# 由于alpine镜像使用的是musl libc而不是gnu libc,/lib64/ 是不存在的。但他们是兼容的,可以创建个软连接过去.
ENV GOPATH /go
ENV PATH /usr/local/go/bin:$GOPATH/bin:$PATH