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

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

一、独立部署

Go 语言支持跨平台交叉编译,也就是说我们可以在 Windows 或 Mac 平台下编写代码,并且将代码编译成能够在 Linux amd64 服务器上运行的程序。

对于简单的项目,通常我们只需要将编译后的二进制文件拷贝到服务器上,然后设置为后台守护进程运行即可。

1、编译

编译可以通过以下命令或编写 makefile 来操作。下面是mac下的命

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o ./bin/程序名

如果嫌弃编译后的二进制文件太大,可以在编译的时候加上-ldflags "-s -w"参数去掉符号表和调试信息,一般能减小20%的大小。

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-s -w" -o ./bin/程序名

其他不同平台的打包语法

windows:

set CGO_ENABLED=0 //禁用CGO
set GOOS=linux //目标平台为linux
set GOARCH=amd64 //目标处理器架构是amd64
go build -o name //编译可执行文件到当前目录 (-o:自定义文件名)


 

mac:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build

2、运行

nohup 用于在系统后台不挂断地运行命令,不挂断指的是退出执行命令的终端也不会影响程序的运行。

我们可以使用 nohup 命令来运行应用程序,使其作为后台守护进程运行。由于在主流的 Linux 发行版中都会默认安装 nohup 命令工具,我们可以直接输入以下命令来启动我们的项目:

nohup ./bin/程序名 > run.log 2>&1 &

二、Docker部署

1、安装docker

参考文章:
【Docker技术内幕】(四)Linux环境下安装docker_linux 7.9安装docker-CSDN博客

2、新建Dockerfile

#指定构建镜像的基础镜像
FROM golang:latest AS builder

#开发者
MAINTAINER who

# 为我们的镜像设置必要的环境变量
ENV GO111MODULE=on \
    GOPROXY=https://goproxy.cn,direct \
    CGO_ENABLED=0 \
    GOOS=linux \
    GOARCH=amd64

#设置工作目录,后面的RUN,COPY等都基于在这个目录下工作
WORKDIR /goApp

# 复制项目文件到工作目录
COPY . .

# 编译应用程序成二进制文件app
RUN go build -o app


###################
# 接下来创建一个小镜像
###################
FROM scratch

WORKDIR /goApp

# 从第一阶段复制二进制文件到当前阶段
COPY --from=builder /goApp/app .

#容器暴露的端口
EXPOSE 8080

#启动容器时运行的命令
CMD ["./app"]

3、构建镜像

docker build . -t goweb_app

4、查看镜像

docker images|grep goweb

5、启动容器

docker run -d -p 8080:8080 --restart always goweb_app

6、测试

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

forest_long

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值