配置Golang编译环境

go1.20.2.linux-amd64.tar.gztar -zxvf go1.20.2.linux-amd64.tar.gz/usr/local/go/usr/local/go-pathvim /etc/profile
export GOROOT=/usr/local/go 
export GOPATH=/usr/local/go-path 
export PATH=$PATH:$GOROOT/bin
source /etc/profile
go version

编译

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 outputgo build -ldflags "-s -w" -tags release -o output/test./output/test

部署

  1. 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选项,容器将在前台模式下运行,这意味着你的控制台终端将一直占用