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"]
posted @ 2021-12-28 11:09  鸣昊  阅读(398)  评论(0编辑  收藏  举报