go 可执行文件报错 sh: ./xxx: not found
背景
遇到个项目打包出来的可执行文件在 alpine 容器执行报错
解决方法
判断是缺少依赖环境 导致不识别这个可执行文件 安装 glibc 解决问题
也可以直接换FROM 镜像为 busybox:glibc
cat Dockerfile
FROM alpine:3.14
COPY xxx /tmp/
ARG TZ="Asia/Shanghai"
ENV TZ ${TZ}
RUN mkdir -p /opt/xxx && mv /tmp/xxx /tmp/ysera_mgtv.conf /opt/xxx && \
chmod 777 /opt/xxx/xxx && \
sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \
apk add tzdata && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime && \
wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub && \
wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.29-r0/glibc-2.29-r0.apk && \
apk add glibc-2.29-r0.apk
USER root
CMD ["/opt/xxx/xxx"]