一、开发环境准备
go官方api: https://studygolang.com/pkgdoc
1、安装sdk
官网下载 https://studygolang.com/dl
2、环境变量
-
环境变量windows 会自动配置好,但是默认都在c盘。安装路径自定义过注意修改。
- 避坑:GOPATH默认会配置在环境变量的上面用户变量里面,注意删除了,否则在下面系统环境变量里配置的不会生效。
-
cmd查看go版本号 go version
-
cmd查看go环境信息 go env
-
工具包下载不了,设置国内代理GOPROXY:
go env -w GO111MODULE=on
go env -w GOPROXY=https://proxy.golang.com.cn,direct
3、VsCode开发
详细开发方法参考文章:https://blog.csdn.net/qq_41048567/article/details/127681203
关于Go项目的目录结构
Go的项目结构是官方规定的标准,要按照这个目录结构来,且文件夹命名是固定的
- GOPATH:可以先暂时将他理解成我们的工作空间(我们之后Go的开发都将在GOPATH这个目录下进行)
- bin:用来放置编译后的可以执行文件, 比如在windows环境下,go的代码被编译后就会在该目录下生成一个.exe的可执行文件
- pkg:在Go编译过程中会产生许多的库文件则放置在该目录下
- src:存放源码文件的地方,我们就在该目录下编写代码。一般都要在src下面按不同项目新建子目录进行管理,层级不限。
问题
- 在第一次使用vscode进行golang项目运行时,控制台的输出端显示乱码。
- 在终端进行go version时,显示go不是内部命令。
- 解决:在go扩展的设置里setting.json中添加如下配置
# 路径修改为自己的实际路径
"go.gopath": "C:\\mywork\\goProjects",
"go.goroot": "D:\\Program Files\\Go"
4、go build 打包
打包为exe文章来源:https://uudwc.com/A/zkpL8
# cmd中修改go环境变量
go env -w GOARCH="amd64"
go env -w GOOS="windows"
# 打包为exe
go build
打包为Linux环境下可执行文件文章来源地址https://uudwc.com/A/zkpL8
# cmd中修改go环境变量
go env -w GOARCH="arm64"
go env -w GOOS="linux"
# 打包为Linux环境下可执行文件
go build
二、docker镜像制作
1、构建Linux可执行文件
- 修改本地go环境系统架构为linux、arm64,根据要部署的服务器架构修改。
- 生成可执行文件 go build
# cmd中修改go环境变量
go env -w GOARCH="arm64"
go env -w GOOS="linux"
# 打包为Linux环境下可执行文件
go build
2、编写Dockerfile
FROM ubuntu:20.04
LABEL maintainer="jkenergy"
# 设置镜像的语言 支持中文,否则中文都乱码
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
ENV LC_ALL C.UTF-8
ENV DOCKER_LOGS=stdout
RUN mkdir -p /opt/bms
VOLUME ["/opt/bms/logs"]
WORKDIR /opt/bms
COPY jk-bms .
COPY jk ./jk
COPY assets ./assets
RUN chmod +x jk-bms
EXPOSE 9090
# CMD 设置启动命令
CMD ["./jk-bms", "-env", "fat"]
3、打包镜像
- 目录文件准备
- 将源码中的 assets目录和jk/bms/configs目录拷贝到Dockerfile的同级目录
- 将准备好的可执行文件拷贝到Dockerfile的同级目录
- 在Dockerfile目录执行docker命令:
docker build -t bms-go .
- 创建并启动容器,映射端口:
docker run -dit --name bms-go -p9090:9090 bms-go:latest
- 验证:
curl http://127.0.0.1:9090/bms/healthCheck
参考资料
- 环境安装:
- https://blog.csdn.net/qq_41048567/article/details/127643845
- GoLang命令:
- https://blog.csdn.net/QcloudCommunity/article/details/126047057
- 开发工具:
- https://blog.csdn.net/xinshuzhan/article/details/122383757
- https://blog.csdn.net/qq_41048567/article/details/127681203
- 使用VsCode开发:
- https://blog.csdn.net/qq_41048567/article/details/127681203
- VsCode快捷键:
- https://blog.csdn.net/weixin_46655235/article/details/121788623
- go-gin-api 文档
- https://www.yuque.com/xinliangnote/go-gin-api/ngc3x5
- Golang标准库文档
- https://studygolang.com/pkgdoc
- go菜鸟教程
- https://www.runoob.com/go/go-functions.html
- Gin Web Framework
- https://gin-gonic.com/zh-cn/docs/examples/html-rendering/
- EasyGoAdmin
- https://gitee.com/easygoadmin/EasyGoAdmin_Gin_EleVue/tree/master/
- go常用的web框架爱
- https://blog.csdn.net/weixin_50196917/article/details/124611854
- go官方api:
- https://studygolang.com/pkgdoc