当前位置: 首页 > news >正文

解决docker alpine /bin/sh: ./main: not found

解决docker alpine /bin/sh: ./main: not found

  1. golang中编译之后的二进制文件部署在alpine镜像中出现了not found问题解决
  2. 这种情况是因为动态链接库位置错误导致的,alpine镜像使用的是musl libc而不是gun libc。因而动态链接库的位置不一致。
  3. 在基础镜像内执行:mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
  4. 加了软连接之后发现还是如图下问题
    在这里插入图片描述

解决Error loading shared library libresolv.so.2: No such file or directory (needed by ./main)

  1. 在 Alpine Linux 上,使用的是 musl libc 而不是 glibc,因此一些符号可能会有所不同。你可以尝试使用静态链接的方式来构建你的 Go 二进制文件,以便它包含所需的依赖关系。

编译的时候加上这几个参数就可以解决了

这里的 CGO_ENABLED=0 禁用了 CGO,而 -a 标志强制重新构建所有包,-installsuffix cgo 防止 CGO 生成 CGO 链接的对象。

CGO_ENABLED=0 GOOS=linux 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_ENABLED=0 GOOS=linux 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 --restart=always --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?spm=1001.2014.3001.5502

http://www.lryc.cn/news/263261.html

相关文章:

  • 深入了解网络基础:从背景到协议
  • 针对这两个趋势,3.0全新新零售商业模式可以采取以下策略:
  • 鸿蒙HarmonyOS开发用什么语言
  • 气象数据预测分析与可视化:天气趋势预测揭秘
  • install cuda cudnn tersorRT
  • Vue 3 + Vite 4 移动端低版本白屏处理
  • Python爬虫-解决使用requests,Pyppeteer,Selenium遇到网站显示“您的连接不是私密连接”的问题|疑难杂症解决(2)
  • 机场信息集成系统系列介绍(5):机场运行资源管理系统
  • JavaEE:线程池精讲
  • spring-cloud-starter-gateway-mvc的网关实现
  • 《PySpark大数据分析实战》-11.Spark on YARN模式安装Hadoop
  • 多架构容器镜像构建实战
  • 通过层进行高效学习:探索深度神经网络中的层次稀疏表示
  • 自然语言处理阅读第二弹
  • 利用canvas封装录像时间轴拖动(uniapp),封装上传uniapp插件市场
  • PDF转为图片
  • 隐私计算介绍
  • HTML有哪些列表以及具体的使用!!!
  • DriveWorks Solo捕获参数(二)
  • 基于开源的JAVA mongodb jdbc 驱动 使用教程
  • [RK-Linux] RK3399使用RK开源SPL,修改U-Boot为FIT打包方式,裁剪trust分区
  • 【网络安全】-Linux操作系统—VMWare软件
  • 关于chatgpt一点肤浅认识
  • Redis结合SpringBoot 基本使用
  • JAVA主流日志框架梳理学习及使用
  • java多个设计模式解决大量if-else堆积
  • js DOM的一些小操作 获取节点集合Node( getElementsByClassName等)
  • Arcgis导出为tiff
  • nginx中的root and alias命令的区别
  • python提取图片型pdf中的文字(提取pdf扫描件文字)