配置Golang编译环境
-
下载go环境 https://studygolang.com/dl 选择go1.20.2.linux-amd64.tar.gz
-
tar -zxvf go1.20.2.linux-amd64.tar.gz
解压到/usr/local/go
-
创建
/usr/local/go-path
-
vim /etc/profile
export GOROOT=/usr/local/go export GOPATH=/usr/local/go-path export PATH=$PATH:$GOROOT/bin
-
source /etc/profile
重新加载配置 -
验证一下环境
go version
编译
-
进入源码目录
-
启用go module
go generate -run "go env -w GO111MODULE=on"
-
配置下载代理
go generate -run "go env -w GOPROXY=https://goproxy.cn,direct"
-
下载依赖
go generate -run "go mod tidy"
-
创建二进制文件输出目录
mkdir output
-
go build -ldflags "-s -w" -tags release -o output/test
-s 和 -w 是传递给链接器的参数,它们分别表示:
-s:省略符号表和调试信息。这会使生成的可执行文件更小,并且不包含调试信息,因此不容易被反汇编或者调试。这个选项在发布生产环境时很有用。 -w:省略 DWARF 符号表。这个选项可以减小生成的可执行文件的大小。
使用-tags release选项来禁用调试模式。这将从二进制文件中删除所有调试相关的代码和信息,从而提高二进制文件的运行速度和安全性。
-
./output/test
启动一下, 看看是否正常运行
部署
-
output目录下
vim dockerfile
编辑后保存# 谨慎选择基础镜像 越小的镜像缺失的工具越多, 可能存在的问题包括但不限于 # 1. shell环境不完整, 表现为可执行文件执行不了 # 2. ssl等基础库不存在, 无法访问https服务 # 3. 常用的时区设置方式失效 FROM centos:7 RUN adduser appuser ADD test /test RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' > /etc/timezone EXPOSE 7099 ## op RUN cd / RUN chmod 777 /test RUN mkdir /log RUN chmod -R 777 /log USER appuser CMD ["./test", "pro"]
-
构建镜像
docker build -t test .
-
创建自定义网络
docker network create --subnet=172.18.0.0/16 rootnet
-
运行容器
docker run --name test -p 7099:7099 --network rootnet --ip 172.18.0.3 -v /usr/soft/test/config-pro.yaml:/config-pro.yaml -v /usr/soft/test/log/:/log/ -d test
--name 容器名
-p 端口映射 宿主机端口:容器端口
--network 指定网络
--ip 指定ip
-v 文件挂载 宿主机目录或文件:容器目录或文件
-d 后台模式 如果没有使用-d选项,容器将在前台模式下运行,这意味着你的控制台终端将一直占用
注意: 本文归作者所有, 未经作者允许, 不得转载. 若有谬误, 欢迎指出