golang 编写的可执行程序, 几乎不依赖环境,可以随意迁移。
作为服务来运行,可以注册到 rc 或者 systemd 或者 使用supervisord 等第三方程序守护 等等。。
我这里 使用docker来 处理,因为宿主机本身已经安装了docker 所有服务都docker运行,但是因为golang 程序很多,每一个小程序都维护一个docker镜像 反而会增加工作量。
这里简单来说一下。
golang的编译
我这里用alpine镜像 在编译golang的时候 注意添加 CGO_ENABLED=0
,Makefile如下
1
2
3
4
5
6
| .PHONY: buildandrun
BIN_FILE=XXXXXX
buildandrun:
@CGO_ENABLED=0 go build -o "${BIN_FILE}" ${BIN_FILE}.go
#./"${BIN_FILE}"
|
如果使用centos debian之类的镜像不需要额外处理
上传编译后的可执行文件
创建docker
在服务器上运行
1
2
3
4
| tempName=fish-send-code
docker run -itd --name ${tempName} --hostname ${tempName} --network host --privileged=true --restart=always \
-v /fish/opt/serv-bin/:/fish/opt/serv-bin/ \
alpine:3.17.2 /fish/opt/serv-bin/${tempName}
|
查看日志
1
| docker logs -f ${tempName}
|