部署Go语言代码

部署Go语言代码,第1张

理解目标:

命令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

下载二进制文件:

使用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系统。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/994847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存