解决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 main
  go build -o main main.go
  CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o main main.go
  sudo chown root:root main
  sudo chmod +x main
  sudo docker build -f Dockerfile2 -t $name:$version .
  sudo rm -f main
  sudo docker rm $name -f
  sudo 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/255751.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin Multiplatform的现状—2023年网络研讨会

Kotlin Multiplatform的现状—2023年网络研讨会 在2023年,Kotlin Multiplatform因其开发、当前状态和未来潜力而受到了相当大的关注。随着越来越多的开发者对采用KMP进行跨平台解决方案表示兴趣,JetBrains在11月下旬推出了一系列网络研讨会作为回应。首…

python使用ctypes访问Windows原生API

在Windows系统中,C语言编写的动态链接库(DLL)是一种可由多个程序同时使用的代码和数据共享库。DLL文件包含了一些可以被其他程序调用的函数和数据。这些DLL文件通常与应用程序一起发布,并在需要时被加载到内存中,以便应…

创建型模式之抽象工厂模式

一、概述 1、抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 2、抽象工厂模式:一个工厂可以生产一系列产品(一族产品),极大减少了工厂类的数量 3、抽象工厂模式&am…

2023大湾区汽车创新大会在深圳坪山开幕

12月15日,2023大湾区汽车创新大会在深圳坪山开幕。 本次大会是由广东省科学技术厅、深圳市发展和改革委员会、深圳市工业和信息化局、中共深圳市新能源和智能网联汽车产业链委员会、坪山区人民政府指导,北京理工大学深圳汽车研究院、广东省大湾区新能源汽…

SpringBoot Whitelabel Error Page 报错--【已解决】

springboot 报错信息如下 这个报错页面就是个404 ,代表你访问的url 没有对应的的requestmapping 其实没啥影响的一个问题,但是看到Error 就是不爽,改了他丫的 解决方法如下 一、调整application.properties配置【治标不治本】 server.err…

【PHP入门】2.1-运算符

-运算符- 运算符:operator,是一种将数据进行运算的特殊符号,在PHP中一共有十种运算符之多。 2.1.1赋值运算符 赋值运算:符号是“”,表示将右边的结果(可以是变量、数据、常量和其它运算出来的结果&#…

ELK(九)—logstash

目录 简介安装部署测试 配置详解编写配置文件连接elasticsearch将数据推送到elasticsearch中。 简介 Logstash 是一个开源的服务器端数据处理管道,由 Elastic 公司维护和开发。它被设计用于从不同来源收集、处理和转发数据,以供 Elasticsearch 进行存储…

〖大前端 - 基础入门三大核心之JS篇(57)〗- 继承

说明:该文属于 大前端全栈架构白宝书专栏,目前阶段免费,如需要项目实战或者是体系化资源,文末名片加V!作者:哈哥撩编程,十余年工作经验, 从事过全栈研发、产品经理等工作,目前在公司…

带你学C语言~指针(2)

目录 🏉前言 🚀 数组名的理解 🚀使用指针访问数组 ✈一维数组传参的本质 ✈冒泡排序 🏆二级指针 🏆指针数组 🏆指针数组模拟二维数组 🎉结束语 🏉前言 上一章,小…

torch.gather(...)

1. Abstract 对于 pytorch 中的函数 torch.gather(input, # (Tensor) the source tensordim, # (int) the axis along which to indexindex, # (LongTensor) the indices of elements to gather*,sparse_gradFalse,outNone ) → Tensor有点绕,很多博客画各…

Webpack安装及使用

win系统 全局安装Webpack及使用 前提:使用Webpack必须安装node环境,建议使用nvm管理node版本。 1:查看自己电脑是否安装了node 2:npm install webpack版本号 -g 3:npm install webpack-cli -g -g:表示全局安装 4&…

ElasticSearch单机或集群未授权访问漏洞

漏洞处理方法: 1、可以使用系统防火墙 来做限制只允许ES集群和Server节点的IP来访问漏洞节点的9200端口,其他的全部拒绝。 2、在ES节点上设置用户密码 漏洞现象:直接访问9200端口不需要密码验证 修复过程 2.1 生成认证文件 必须要生成…

力扣225. 用队列实现栈【附进阶版】

文章目录 力扣225. 用队列实现栈示例思路及其实现两个队列模拟栈一个队列模拟栈 力扣225. 用队列实现栈 示例 思路及其实现 两个队列模拟栈 队列是先进先出的规则,把一个队列中的数据导入另一个队列中,数据的顺序并没有变,并没有变成先进后…

【转载】【Unity】WebSocket通信

1 前言 Unity客户端常用的与服务器通信的方式有socket、http、webSocket。本文主要实现一个简单的WebSocket通信案例,包含客户端、服务器,实现了两端的通信以及客户端向服务器发送关闭连接请求的功能。实现上没有使用Unity相关插件,使用的就是…

【经典LeetCode算法题目专栏分类】【第5期】贪心算法:分发饼干、跳跃游戏、模拟行走机器人

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能AI、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 分发饼干 class Solutio…

换热站数字孪生 | 图扑智慧供热 3D 可视化

换热站作为供热系统不可或缺的一部分,其能源消耗对城市环保至关重要。在双碳目标下,供热企业可通过搭建智慧供热系统,实现供热方式的低碳、高效、智能化,从而减少碳排放和能源浪费。通过应用物联网、大数据等高新技术,…

MongoDB中的关系

本文主要介绍MongoDB中的关系。 目录 MongoDB的关系嵌入关系引用关系 MongoDB的关系 MongoDB是一个非关系型数据库,它使用了键值对的方式来存储数据。因此,MongoDB没有像传统关系型数据库中那样的表、行和列的概念。相反,MongoDB中的关系是通…

美颜SDK是什么?视频美颜SDK在直播平台中的集成与接入教程详解

当下,主播们追求更加自然、精致的外观,而观众也期待在屏幕前欣赏到更为清晰、美丽的画面。为了满足这一需求,美颜SDK应运而生,成为直播平台的重要利器之一。 一、什么是美颜SDK? 通过美颜SDK,开发者可以…

docker在线安装minio

1、下载最新minio docker pull minio/minio 2、在宿主机创建 /usr/local/data/miniodocker/config 和 /usr/local/data/miniodocker/data,执行docker命令 docker run -p 9000:9000 -p 9090:9090 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_K…

数据结构--图

树具有灵活性,并且存在许多不同的树的应用,但是就树本身而言有一定的局限性,树只能表示层次关系,比如父子关系。而其他的比如兄弟关系只能够间接表示。 推广--- 图 图形结构中,数据元素之间的关系是任意的。 一、图…