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

解决go项目构建后不能夸Linux平台的问题

有4个go语言项目需要做CI/CD,最后发布到K8S集群

在这里插入图片描述

先看看gitlab-ci.yml的配置如下。image: 192.168.12.219:80/willlink/golang:ubuntu是一个从docker官方拉取的go1.23镜像,os版本是debian12。

stages:- build-deploybuild-deploy:stage: build-deployimage: 192.168.12.219:80/willlink/golang:ubuntutags:- runneronly:- developbefore_script:- echo "CI/CD开始执行"- eval $(ssh-agent -s)- ssh-add <(echo "$STAGING_PRIVATE_KEY")- echo ${STAGING_PRIVATE_KEY}- echo "为容器配置ssh私钥成功!"script:- go build- ls -alh- docker build -t $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG .- docker login $HARBOR_URL -u $HARBOR_USERNAME -p $HARBOR_PASSWORD- docker push $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG- docker rmi -f $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG- echo "开始更新K8S应用"- ssh -o StrictHostKeyChecking=no root@192.168.12.211 "kubectl -n willlink-go get deploy &&kubectl set env deployment/cabinet-gateway FORCE_UPDATE_=$(date +%Y%m%d%H%M) -n willlink-go &&sleep 20 &&kubectl -n willlink-go get pods -o wide | grep 'cabinet-gateway' &&echo '已更新!退出shell!!!' &&exit"

构建完成后会生成对应的产物,也就是一个二进制命令cabinet_sinexcel_gateway

在这里插入图片描述

接下来会执行一个docker build的操作,先看看Dockerfile,这个alpine是在docker官方的alpine:3.20

FROM 192.168.12.219:80/lvwo/alpine:v1
COPY cabinet_sinexcel_gateway /
COPY conf.ini /
EXPOSE 27030
ENTRYPOINT ["/cabinet_sinexcel_gateway"]

这个容器运行的时候会报错cabinet_sinexcel_gateway位找到,但是我实际查看容器内是有这个命令的,也就是说构建的go二进制命令不能再alpine平台运行。

之前我的golang构建容器是golang:1.23-alpine-3.20是可以在alpine容器运行的,后面增加了go参数就解决了

  script:- export CGO_ENABLED=0- export GOOS=linux- export GOARCH=amd64- go build- ls -alh- docker build -t $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG .- docker login $HARBOR_URL -u $HARBOR_USERNAME -p $HARBOR_PASSWORD- docker push $IMAGE_HARBOR_REPOSITORY/$PROJECT_IMAGE_NAME:$PROJECT_IMAGE_TAG
  1. export CGO_ENABLED=0
    • 禁用CGO(C语言调用功能)
    • 当设为0时,编译的二进制文件将是静态链接的,不依赖任何外部C库,这是实现跨平台的关键
  2. export GOOS=linux
    • 设置目标操作系统为Linux
    • GOOS(Go Operating System)指定编译后的程序运行的操作系统
    • 其他常见值包括:windowsdarwin(macOS)、freebsd
  3. export GOARCH=amd64
    • 设置目标CPU架构为amd64(即64位x86架构)

    • GOARCH(Go Architecture)指定编译后的程序运行的CPU架构

    • 其他常见值包括:386(32位x86)、armarm64

    • GOARCH(Go Architecture)指定编译后的程序运行的CPU架构

    • 其他常见值包括:386(32位x86)、armarm64

最后也是解决了

http://www.xdnf.cn/news/67303.html

相关文章:

  • JavaScript-ES5 循环中的闭包 “共享变量” 问题
  • 部署本地Dify
  • 智能安全用电系统预防电气线路老化、线路或设备绝缘故障
  • Windows部署FunASR实时语音听写便捷部署教程
  • Python Cookbook-6.6 在代理中托管特殊方法
  • AI重塑网络安全:机遇与威胁并存的“双刃剑”时代
  • CI/CD
  • Servlet上传文件
  • 2025年渗透测试面试题总结-拷打题库10(题目+回答)
  • 软考 中级软件设计师 考点知识点笔记总结 day14 关系代数 数据库完整性约束
  • 计算机是如何工作的(上)
  • 23. git reset
  • 【形式化验证基础】活跃属性Liveness Property和安全性质(Safety Property)介绍
  • 计算机组成与体系结构:内存接口(Memory Interface)
  • 工具:下载vscode .vsix扩展文件及安装的方法
  • 可穿戴设备待机功耗需降至μA级但需保持实时响应(2万字长文深度解析)
  • 小天互连与DeepSeek构建企业智能化新生态
  • iframe下系统访问跨域问题解决办法
  • VTK知识学习(53)- 交互与Widget(四)
  • Unity3D ILRuntime与Scripting Backend整合指南
  • 剪映学习02
  • Kotlin协程学习笔记
  • OpenCV---图像预处理(四)
  • HCIE Datacom备考技巧
  • typedef MVS_API CLISTDEF0IDX(ViewScore, IIndex) ViewScoreArr;
  • 《解锁增强型上下文学习,打造你的专属智能助手》
  • 每天学一个 Linux 命令(29):tail
  • gnome中删除application中失效的图标
  • 齐次坐标系下的变换矩阵
  • 【图论 DFS BFS】P10725 [GESP202406 八级] 最远点对|普及+