当前位置: 首页 > 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

最后也是解决了

相关文章:

  • 使用IntersectionObserver实现目标元素可见度的交互
  • Franka机器人ROS 2来袭:解锁机器人多元应用新可能
  • [密码学基础]商用密码应用安全性评估(密评):网络安全新风口,高薪紧缺人才必备技能
  • 本地搭建一个简易版本的 Web3 服务
  • 2025年世界职业院校技能大赛实施方案(意见稿)
  • 讯联桌面TV版apk下载-讯联桌面安卓电视版免费下载安装教程
  • 【25软考网工笔记】第三章 局域网(1)CSMA/CD、二进制指数退避算法、最小帧长计算
  • C语言学习记录(16)文件操作7
  • VScode-py环境
  • 用全新发布的ChatGPT-o3搜文献写综述、专业审稿、降重润色,四个步骤轻松搞定全部论文难题!
  • element-plus中,Steps 步骤条组件的使用
  • 从“堆料竞赛”到“体验深耕”,X200 Ultra和X200s打响手机价值升维战
  • 第 7 篇:总结与展望 - 时间序列学习的下一步
  • ubuntu--汉字、中文输入
  • 1-1 什么是数据结构
  • Python 金融量化分析
  • pytest基础-new
  • 泰迪智能科技大模型应用平台功能特色优势
  • 代码随想录第21天: 回溯算法3
  • HAL库(STM32CubeMX)——高级ADC学习、HRTIM(STM32G474RBT6)
  • 金价新高不断,上金所再发风险提示,黄金能否持续闪耀?
  • 泽连斯基称乌克兰全境响起防空警报
  • 东航推出“上博号”班机,上博设立“东航特展厅”
  • 一女子称醉酒后疑似被性侵,长沙警方通报:嫌犯邱某某已被刑拘
  • 2025年世界互联网大会亚太峰会人工智能大模型论坛举行
  • 凭春晚分会场爆火的无锡,为何请来了上海主流媒体和网络大V