-
配置Go环境
下载Go安装包 https://studygolang.com/dl -
解压移动到/usr/local
sudo tar -C /usr/local -xzf go1.22.4.linux-amd64.tar.gz
- 添加环境变量
sudo vim ~/.profile
export PATH=$PATH:/usr/local/go/bin
export GOPATH=$HOME/go
export PATH=$PATH:$GOPATH/bin
source ~/.profile
这个很重要,编译时需要相关的编译工具和库
sudo apt install build-essential # 安装编译工具和库
- 修改go环境变量
go env -w GOPROXY=https://goproxy.cn,direct
- 安装相关程序,否则打包的时候会报错
sudo apt-get install libzmq3-dev
也可以安装以下依赖,通过make 进行打包
sudo apt install -y libtool pkg-config build-essential \
autoconf automake uuid-dev
sudo apt install -y libzmq3-dev libzmq5
# make 命令只不过需要配合Makefile一起使用,Makefile需要自行编写
make build
# 编译好的二进制在./cmd/下
# 编译docker镜像
sudo make docker
- go mod子命令,下面命令中需要执行下载相关依赖
//初始化项目的go.mod文件
go mod init
//生成 Vendor 目录
go mod vendor
//删除错误或者不使用的 Modules
go mod tidy
//验证依赖是否正确
go mod verify
//清理 Modules 缓存
go clean -modcache
//下载项目依赖的 modules 到本地 Cache
go mod download
//编辑 go.mod 文件,选项有 -json、-require 和 -exclude
go mod edit
# e.g.
go mod edit -replace=golang.org/x/crypto@v0.0.0=github.com/golang/crypto@latest
- 在main同级目录下,执行:
go build -o app main.go
app是打包后生成的名字
- 前端打包通过docker部署
docker-compose.yml
version: "3"
services: #指定服务名称
vue_test: #vue前端服务
container_name: vue-demo
image: nginx:1.9.0 #nginx镜像
ports: #避免出现端口映射错误,建议采用字符串格式
- "8088:8080" ## 左侧端口是容器对外端口,也就是我们浏览器访问的端口,右侧端口为nginx的监听端口,下面配置文件中会说明
volumes:
- ./baize-ui/dist/:/usr/share/nginx/html/ ## 指定根html的文件目录
- ./default.conf:/etc/nginx/conf.d/default.conf ## 指定nginx的配置文件
restart: always ## 自动重启
default.conf
server {
listen 8080; ## nginx监听端口,对应docker-compose端口映射中右侧的端口
server_name localhost;
gzip on;
gzip_min_length 1k;
gzip_http_version 1.0;
gzip_comp_level 1;
gzip_types text/html text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;
gzip_disable "MSIE [1-6].";
gzip_vary on;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root /usr/share/nginx/html; ## 对应docker-compose文件映射的跟html文件路径
try_files $uri $uri/ @router;
index index.html index.htm;
error_page 405 =200 http://$host$request_uri;
}
location ~ /data/ {
root /data/; #磁盘的目录路径,一般用于访问静态文件
}
location /prod-api/{ #/prod-api为访问后端服务统一前缀
proxy_pass http://192.168.31.12:8082/; #后端服务地址
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 100m;
}
location @router {
rewrite ^.*$ /index.html last;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
进行打包
docker-compose up -d