怎么做网站推广临沂,烟台网站建设技术托管,工装装修,建筑网课平台哪个好解决docker alpine /bin/sh: ./main: not found
golang中编译之后的二进制文件部署在alpine镜像中出现了not found问题解决这种情况是因为动态链接库位置错误导致的#xff0c;alpine镜像使用的是musl libc而不是gun libc。因而动态链接库的位置不一致。在基础镜像内执行alpine镜像使用的是musl libc而不是gun libc。因而动态链接库的位置不一致。在基础镜像内执行mkdir /lib64 ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2加了软连接之后发现还是如图下问题
解决Error loading shared library libresolv.so.2: No such file or directory (needed by ./main)
在 Alpine Linux 上使用的是 musl libc 而不是 glibc因此一些符号可能会有所不同。你可以尝试使用静态链接的方式来构建你的 Go 二进制文件以便它包含所需的依赖关系。
编译的时候加上这几个参数就可以解决了
这里的 CGO_ENABLED0 禁用了 CGO而 -a 标志强制重新构建所有包-installsuffix cgo 防止 CGO 生成 CGO 链接的对象。
CGO_ENABLED0 GOOSlinux go build -a -installsuffix cgo -o main .请确保你的 Go 项目没有引用 cgo并使用静态编译重新构建容器镜像。重新构建容器时使用
docker build -t xxx:1.0 .最后花了一天找资料终于解决了
还有docker拉取alpine镜像很慢
下载Alpine镜像很慢有时候会卡住因为使用的资源默认是境外服务器将境外服务器替换为国内服务器即可
# 表示依赖 alpine 最新版
FROM alpine:latest
# 下载Alpine镜像很慢有时候会卡住因为使用的资源默认是境外服务器将境外服务器替换为国内服务器即可
RUN set -eux sed -i s/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g /etc/apk/repositories这是我的部署脚本方法
function deploy2 {sudo rm -f maingo build -o main main.goCGO_ENABLED0 GOOSlinux go build -a -installsuffix cgo -o main main.gosudo chown root:root mainsudo chmod x mainsudo docker build -f Dockerfile2 -t $name:$version .sudo rm -f mainsudo docker rm $name -fsudo docker run --restartalways --name $name -p 8087:8080 -v $logs:/apps/log -e Mode$mode -d $name:$version
}完整的dockerfile和sh脚本你看我的另一篇文章golang部署 https://blog.csdn.net/qq_39272466/article/details/131212322?spm1001.2014.3001.5502