部署Go语言代码

Golang(1)|从环境准备到快速上手 Go语言保证了既能到达静态编译语言的安全和性能,又达到了动态语言开发速度和易维护性,有人形容Go语言: , 说明Go语言既,又能达到。Go语言有以下 特性:Go 有多种安装方式,如:Go 源码安装、Go 标准包安装、第三方工具(yum、apt-get 等)安装GOPATH详解 Linux下安装GO 获取安装压缩包 设置环境变量 测试是否安装成功 看到 go version 命令输出 go 版本号 go1.10.2 linux/amd64 ,说明 go 命令安装成功。 Windows 阅读详情

理解目标:

命令go env,如下:

GO111MODULE="auto"
GOARCH="amd64"
GOBIN="/Users/douxiaobo/go/bin"
GOCACHE="/Users/douxiaobo/Library/Caches/go-build"
GOENV="/Users/douxiaobo/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/douxiaobo/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/douxiaobo/go"
GOPRIVATE=""
GOPROXY="https://proxy.golang.org,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.17.3"
GCCGO="gccgo"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/3x/txs8lfzs6s13njkkrvjmnz2c0000gn/T/go-build2603688842=/tmp/go-build -gno-record-gcc-switches -fno-common"

要指定目标平台,可以环境变量的方式给编译器指定操作系统和体系结构。要指定操作系统,可使用环境变量GOOS;要指定体系结构,可使用环境变量GO。

要为32位的Linux系统编程程序,如下:

GOOS=linux GOARCH=386 go build main.go

结果生成了Unix文件main。

要为64位的Windows系统编译程序,可执行下面的命令如下:

GOOS=windows GOARCH=amd64 go build main.go

结果生成新文件main.exe。

压缩二进制文件的大小:

输入命令行如下:

go build main.go

然后输入命令行“ls -l”,运行结果如下:

-rwxr-xr-x  1 douxiaobo  staff  1932288  1 27 18:37 main
-rw-r--r--  1 douxiaobo  staff      389  1 27 17:52 main.go

输入命令行如下:

GOOS=linux go build -ldflags="-s -w" main.go

然后输入命令行“ls -l”,运行结果如下:

-rwxr-xr-x  1 douxiaobo  staff  1298432  1 27 18:33 main
-rw-r--r--  1 douxiaobo  staff      389  1 27 17:52 main.go

二进制文件运行工具upx。

使用Docker:(没条件试一试, 只能抄袭)

示例Web服务器,程序清单如下:

package main

import (
	"net/http"
)
func helloWorld(w http.ResponseWriter, r *http.Request){
	w.Write([]byte("Hello World.\n"))
}
func main() {
	http.HandleFunc("/",helloWorld)
	http.ListenAndServe(":8000",nil)
}

Docker文件,程序清单如下:

FROM golang:1.9
COPY example02.go /
RUN go build -o /emaple02/example02.go
EXPOSE 8000
ENTRYPOINT ["/example02"]

要在本地计算机构建这个映像,可执行如下命令:

docker build -t hello-go .

构建映像后,就可在本地计算机上运行容器了。

docker run -p 8000:8000 hello-go:latest

这个命令将容器的端口8000绑定到主机,这意味着可以访问这个容器了。如果浏览器中输入http://localhost:8000/ ,这个应用程序将响应以文本Hello World。

要停止这个应用程序,可再打开一个终端,并在其中执行如下命令:

docker ps

这将显示这个应用程序的id号。通过执行下面的命令,并指定这个id号,可关闭相应的Docker容器。

docker stop <container_id>

下载二进制文件:

使用macOS系统,使用shasum命令; 使用Windo

ws系统,可下载文件校验和完整性验证器(File Checksum Integrity Verifiter)来验证校验和。

两次输入命令行如下:

go build main.go
shasum main

运行结果如下:

6397724e92e35f809887257349ee7aab5f375042  main

使用go get:

在发布代码斋,一种轻量级但有效的方式是使用命令go get。命令go get可用来安装命令行工具,是官方采用的方法,低干涉方法非常有效。go get适合用来分享命令行工具。

通过包管理器发布代码:

Homebrew:用于macOS系统。

Chocolatey:用于Windows系统。

Apt:用于Debian和Ubuntu系统。

Yum:用于Fedora、Red Hat和Centos系统。

Pacman:用于Arch Linux系统。

Go微服务九 go语言工程制作dockerfile,通过docker将项目或者独立服务部署到服务器 创作不易感谢支持。 一条主写Go和PHP的小菜鸟。平常有时间喜欢自己写点东西,如有不对的地方,欢迎大佬指点。 个人博客:太阳上的雨天 地址:http://blog.caixiaoxin.cn 善于分享,希望有助他人. 非常感谢各位大佬的关注和支持 #go语言工程制作dockerfile,通过docker将项目或者独立服务部署到服务器 前言 docker,[kubernetes]的天下,如何使用docker将go语言项目部署到docker容器,然后部署到服务器>[kubernetes]的天下,如何使用d 阅读详情

相关推荐

构建高效Go项目:Golang项目结构与布局指南

Go Modules是Go语言的依赖管理解决方案,它在Go 1.11版本中引入,并在后续版本中不断完善。它旨在解决Go语言项目中依赖管理和版本控制的问题。在此之前,Go语言项目依赖通常是通过手动下载依赖包到目录下,并且没有一个标准的方式来管理不同版本的依赖。这种依赖管理方式带来的问题包括版本冲突、难以追踪依赖的来源和版本,以及难以自动化构建和部署。Go Modules的引入,允许开发者在项目中声明自己的依赖,并且能够精确地控制依赖的版本,从而解决了以上问题。它引入了go.mod。

weixin_34064233的博客 1551

第 32 章 - Go语言 部署与运维

在Go语言的应用开发中,部署与运维是一个非常重要的环节。它不仅关系到应用能否顺利上线,还直接影响到应用的性能、安全性和可维护性。以下是根据您的需求整理的关于Go语言应用的打包和发布、容器化部署、监控和日志管理的相关内容。

hummhumm的专栏 1318

【动态规划】背包问题(详细总结,很全)

暴力的解法是指数级别的时间复杂度。进而才需要动态规划的解法来进行优化!背包问题是动态规划(Dynamic Planning) 里的非常重要的一部分,关于几种常见的背包,其关系如下:在解决背包问题的时候,我们通常都是按照如下五部来逐步分析,把这五部都搞透了,算是对动规来理解深入了。二维dp数组01背包,先遍历物品还是先遍历背包都是可以的,且第二层for循环是从小到大遍历一维dp数组01背包,只能先遍历物品再遍历背包容量,且第二层for循环是从大到小遍历。求组合数:外层遍历物品,内层遍历背包。

m0_51370744的博客 4万+

【Golang】(十一)部署Go的方法

本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。本本文以部署 Go Web 程序为例,介绍了在 CentOS7 服务器上部署 Go 语言程序的若干方法。

1033

深度学习入门:使用CMSIS-NN在微控制器上部署模型的完整指南与Python Jupyter实践

CMSIS-NN是ARM为Cortex-M系列微控制器设计的神经网络库。它旨在提供一套高效、轻量级的神经网络API,使得开发者可以在资源受限的微控制器上运行深度学习模型。CMSIS-NN优化了各种常见的神经网络层,如卷积层、全连接层等,确保它们在微控制器上的运行效率。# 定义模型])# 编译模型# 训练模型这样,我们就得到了一个简单的手写数字识别模型。注意:为了简洁和清晰,本文中的代码可能不是最优的或最完整的实现。为了获得完整的项目和更多的优化技巧,请下载完整项目。

m0_57781768的博客 5884

运放电路实战:5分钟搞定加法器与减法器的电路设计与调试(附避坑指南)

本文从实战角度出发,详细讲解了运算放大器加法器与减法器的电路设计与调试方法。针对加法器,重点分析了利用“虚地”特性简化设计和选型要点;对于减法器,则深入剖析了决定精度的核心——电阻匹配问题,并提供了使用电阻网络等提升共模抑制比的实用策略。文章还分享了从仿真到实物焊接的完整流程与常见避坑技巧,帮助电子爱好者快速掌握这两种基础运放电路。

weixin_28323057的博客 466

Go 语言安装部署(超详细版本)

在学习和使用 Go 语言时,正确的安装和配置是非常重要的一步。本文将介绍如何在不同操作系统上安装 Go 语言,并讨论一些常见的配置选项,帮助读者更好地了解和使用 Go 语言。无论是初学者还是有一定经验的开发者,都能从本文中获得有用的信息和指导,使他们能够顺利地开始使用 Go 语言进行开发。

栗筝i的博客 7355

推荐算法之Thompson(汤普森)采样

如果想理解汤普森采样算法,就必须先熟悉了解贝塔分布。 一、Beta(贝塔)分布 Beta分布是一个定义在[0,1]区间上的连续概率分布族,它有两个正值参数,称为形状参数,一般用α和β表示,Beta分布的概率密度函数形式如下: 这里的Γ表示gamma函数。 Beta分布的均值是: 方差: ...

weixin_30508241的博客 4259

【Golang】教你简单部署GO语言服务端

众所周知,go语言是可以直接将代码编译为二进制可执行文件的,因此服务器上不需要准备go的环境,仅服务端的部署也非常的简单,对比java真的是太便捷了。下面我就来简单分享一下,怎么实现部署。......

qq_45725675的博客 3492

CMakeTestCCompiler.cmake错误解决

CMakeTestCCompiler.cmake错误解决欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 最近编译项目的时候,遇到一个cmake的错误,具体错误信息如下: /path-to-pr

昨夜星辰的博客 2万+

在Unity3d使用yolov8的onnx模型

输出OUTPUTS是float32[1,35,8400],表示它会输出一个大小为[1, 35, 8400]的浮点数张量。这个输出张量的维度表示了检测到的目标的数量、每个目标的预测参数以及网格单元的数量。输出张量的第一个维度1表示检测到的目标数量。每个目标由35个值组成,表示目标的类别、置信度、边界框的坐标及10个特定点的位置。要取得8400个数据中置信度最高的数据,然后获取该数据其他channel的数据。运行结果:(蓝色是检测手的边框,红点是自定义的点),其中的四个数字分别表示不同的维度。

shenqingyu0605202324的博客 5603

服务器部署Go项目

服务器部署golang项目的几种方式(最全)

qq_67503717的博客 4449

PS射击游戏射线检测优化:原理、工程与全链路高性能实现

射线池:减少GC,提升批量检测效率。分层检测:先粗后细,远距离射击高效判定。批量检测:并行处理,适合大量射线场景。空间结构:进一步加速大场景检测。下面继续深入射线检测优化,补充更多实用细节和进阶技巧,包括空间分区加速、射线检测多线程/异步化、射线合并与分帧、射线池通用模板、常见性能陷阱与调优建议等。对于极端性能需求,可自定义轻量级物理系统,仅检测关键对象(如玩家、子弹),跳过复杂物理引擎。结合AABB、OBB、球体等简单碰撞体,射线-包围体检测极快。空间分区+分层检测是大场景射线优化核心。

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 434

Go语言中的性能优化技巧:从代码到部署

性能优化是一个持续的过程,需要我们在代码层面、编译运行时和部署层面都进行优化。通过掌握这些性能优化技巧,我们可以充分发挥Go语言的性能优势,构建高性能、高可靠的系统。在实际应用中,我们应该根据具体场景选择合适的优化策略,并通过性能测试来验证优化效果。只有不断地分析、优化和测试,才能打造出真正高性能的Go应用。希望本文对你理解和应用Go语言的性能优化技巧有所帮助!

好代码自己会说话,烂代码才需要注释来圆谎 4469

BP神经网络回归预测+SHAP可解释分析+新数据预测(MATLAB完整源码)

BP神经网络回归预测+SHAP可解释分析+新数据预测(MATLAB完整源码)

机器学习之心的博客,关注并私信文章链接,获取对应文章源码和数据。 390

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

[Golang系列] GOFLY在线客服-代码块和作用域-GO语言实现开源独立部署客服系统

go中使用大括号{} 包起来的就是一个代码块,这里面定义的局部变量只在这个代码块中起作用 所有Go源文本的整体块,是全域代码块。 任何一个package都是一个所有package源文件包含的包块,也被称为package代码块。比如package model。 每一个源文件都是一个代码块,也被称为源码文件代码块。比如:hello.go 每一个if、for、switch和select语句都认为它们在...

程序员老狼专注开发aigc或客服系统应用 261

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Golang 官方网站开源项目介绍

Golang 官方网站开源项目介绍 1. 项目基础介绍及主要编程语言 Golang 官方网站开源项目(项目链接)是 Go 语言官方社区的开发和维护项目。该项目包含了 Golang 官方网站的内容和服务器程序,旨在为全球的 Go 语言开发者提供学习、交流和资源共享的平台。项目主要使用 Go、HTML、JavaScript 和 CSS 等编程语言开发。 2. 项目的核心功能 该项目的核心功能包括: ...

gitblog_00851的博客 519

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Go语言中的工程化实践:从代码到部署

上周我们团队招了个新人,代码写得不错,但提交的代码把CI搞挂了三次。一问才知道,他之前的团队没有CI/CD,代码都是手动部署的。这让我意识到,工程化实践对团队协作有多重要。今天聊聊Go项目的工程化实践,从代码结构到部署上线。

好代码自己会说话,烂代码才需要注释来圆谎 1568

**使用Go语言构建微服务架构的实践指南**====================**摘要**:本文将介绍如何使用Go语言构建微服务架构。我们将涵盖从项目设置到服务部署的整个过程,包括代码组织、依赖

本文介绍了如何使用Go语言构建微服务架构的实践指南,包括项目设置、依赖管理、接口设计、性能优化和服务部署等方面的内容。通过本文,您将了解到如何使用Go语言实现微服务架构,并有效地管理和扩展您的应用程序。微服务架构是一种将应用程序划分为一系列小型服务的架构风格,每个服务都独立于其他服务运行,并使用轻量级通信机制进行交互。Go语言因其高效的并发处理能力、简洁的语法和快速的编译速度,成为构建微服务架构的理想选择。使用Go语言的并发特性,如goroutine和channel,来实现高效的并发处理。

gaoxu666666的博客 338

go语言写的编译成了二进制文件如何查看源代码_如何将 Go Web APP 部署到 Docker?掌握该文的 Dockerfile 即可...

你或许想在 Docker 中使用 Go,原因有:如果你想在 Kubernetes 上运行,打包为镜像是必须的(就像我一样)你不得不在同一台机器上运行不同的 Go 版本开发和生产都需要精确的、可复制的、可共享的和确定的环境你需要快速和简单的方式来构建和部署编译好的二进制文件你想快速开始(任何安装了 Docker 的人都可以直接开始编写代码而不需要设置其他依赖或 GOPATH 环境变量)恭喜你,你来对...

weixin_39843431的博客 320

Go语言全链路安全实战:从代码到部署的防护指南

在软件开发领域,安全防护是一个系统工程,涉及从代码编写到部署运维的完整链路。其核心原理在于遵循最小权限原则和纵深防御策略,通过多层次的安全措施降低系统风险。在工程实践中,输入校验、输出编码和依赖管理是构建安全应用的三大基石。输入校验确保外部数据的可信性,输出编码有效防御XSS等注入攻击,而依赖管理则通过自动化漏洞扫描工具(如govulncheck)和供应链安全保障机制,确保第三方组件的安全性。这些技术共同构成了现代Web应用的基础防护体系,特别适用于Go这类高性能后端语言开发的服务端应用。本文聚焦于Go语言

weixin_34033624的博客 487

用AI快速开发GOLANG应用

在代码编辑区输入"用Go实现一个返回天气数据的HTTP服务",AI很快就生成了包含路由定义、数据结构、处理函数的完整代码框架。最惊喜的是,它还自动添加了必要的错误处理和日志记录代码,这些都是新手容易忽略的部分。最棒的是所有操作都在浏览器完成,不需要配置本地环境,特别适合想快速上手Go的新开发者。传统方式需要先学习Go的HTTP包、JSON处理等知识,但借助AI辅助,可以直接描述需求就能获得完整实现方案。作为一个刚开始接触Go语言的开发者,这种开发方式帮我跳过了很多学习曲线,今天就把我的实践过程记录下来。

StarfallRaven13的博客 271

Go语言接入RocketMQ:从部署到监控的完整链路实践(含代码模板)

掌握Go RocketMQ实践全链路,本文详解消息队列在高并发场景的应用,涵盖部署、生产消费代码模板、监控告警配置。基于Go语言实现可靠消息传输,提升系统解耦与性能,值得收藏。

InitPulse的博客 656

m2cgen实战:如何把XGBoost模型变成PHP/Go/Ruby代码?跨语言部署指南

本文详细介绍了如何使用m2cgen(模型代码生成器)将XGBoost模型转换为PHP、Go和Ruby代码,实现跨语言部署。通过对比API服务和代码生成方案的性能差异,展示了代码生成在零延迟预测、隐私合规和资源节约方面的优势,并提供了多语言代码生成的具体实现和优化建议。

weixin_30752699的博客 347

go语言服务器连接编程,Go语言利用ssh连接服务器的方法步骤

学习了Go语言后,打算利用最近比较空一点,写一个前端部署工具,不需要每次都复制粘贴的麻烦,需要完成部署的第一步就需要连接远程服务器打开 ssh server首先我们想要利用ssh连接服务器的前提是服务器打开了ssh server,ssh 分为client和server端 ,如果打开了client可以连接远程服务器,打开了server就可以被连接.因为linux网上教程很多,windows比较少,所...

weixin_31442209的博客 1474

使用golang开发项目demo

使用go语言开发项目的现状 很多公司都是使用go语言来开发程序,但是开发中以及最终交付的代码需要满足以下条件: 能满足DevOps要求,对于开发来说,需要提供一个构建脚本(build.sh)即可 内网也能编译,即build.sh能执行的环境属于内网,不能直接下载第三方库 能在流水线上跑,但是流水线所在的服务器对于权限要求很高,不能随意更改/etc/profile等相关配置文件 代码管控使用git,构建出来的可执行文件内部必须有git信息、版本号、构建日期等信息 写代码的工具使用goland,goland方

地狱,乃是天堂必经之路! 2580
上一篇: Go语言时间编程
下一篇: 在Windows系统中安装Go语言
DXB2021
博客等级 码龄5年 307粉丝 289原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值