优化部署

This commit is contained in:
likun 2025-08-13 10:38:36 +08:00
parent 50b362f40d
commit f55e94035f
21 changed files with 162 additions and 39 deletions

View File

@ -22,6 +22,10 @@ import (
"strconv"
)
func init() {
log.SetFlags(log.LstdFlags | log.Llongfile)
}
// 初始化日志
func InitLogs() (fn func(), err error) {
logger := logs.NewLog(
@ -40,13 +44,23 @@ func InitLogs() (fn func(), err error) {
// 初始化mysql连接
func InitMysql() (fn func(), err error) {
config := model.GlobConfig.Comm.Mysql
dbSource := fmt.Sprintf(
"%s:%s@tcp(%s:%s)/%s",
config.Username,
config.Pwd,
config.IP,
config.Port,
config.DbName)
dbSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8&parseTime=True",
config.Username, config.Pwd, config.IP, config.Port, config.DbName)
dbNotDbSource := fmt.Sprintf("%s:%s@tcp(%s:%s)/?charset=utf8&parseTime=True",
config.Username, config.Pwd, config.IP, config.Port)
sqlX, err := db.NewSQLX("mysql", dbNotDbSource, config.MaxOpenConns, config.MaxIdleConns)
if err != nil {
return nil, fmt.Errorf("创建不指定数据库的mysql连接池报错:%v", err)
}
// 数据库不存在,创建它
sql := fmt.Sprintf(`create database if not exists %s default charset utf8mb4 collate utf8mb4_unicode_ci`, config.DbName)
if _, e := sqlX.Exec(sql); e != nil {
return nil, fmt.Errorf("failed to create database:%v", e)
}
_ = sqlX.Close()
db.Sqlx, err = db.NewSQLX(
"mysql",
dbSource,
@ -70,18 +84,9 @@ func InitClickHouse() (fn func(), err error) {
config := model.GlobConfig.Comm.ClickHouse
dbSource := fmt.Sprintf(
"tcp://%s:%s?username=%s&password=%s&database=%s&compress=true",
config.IP,
config.Port,
config.Username,
config.Pwd,
config.DbName,
)
db.ClickHouseSqlx, err = db.NewSQLX(
"clickhouse",
dbSource,
config.MaxOpenConns,
config.MaxIdleConns,
config.IP, config.Port, config.Username, config.Pwd, config.DbName,
)
db.ClickHouseSqlx, err = db.NewSQLX("clickhouse", dbSource, config.MaxOpenConns, config.MaxIdleConns)
if err != nil {
return fn, fmt.Errorf("init clickhouse error:%v", err)

6
build_all_bin_linux.sh Executable file
View File

@ -0,0 +1,6 @@
export GOOS=linux && \
go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/manager cmd/manager/main.go && \
go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/report_server cmd/report_server/main.go && \
go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/sinker cmd/sinker/main.go && \
go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/init_app cmd/init_app/main.go
echo "build success"

View File

@ -1,6 +1,7 @@
cd vue && npm run build:prod \
&& cd .. && export GOOS=linux&&go build -ldflags="-w -s" -o bin/linux/manager cmd/manager/main.go \
&& go build -ldflags="-w -s" -o bin/linux/report_server cmd/report_server/main.go \
&& go build -ldflags="-w -s" -o bin/linux/sinker cmd/sinker/main.go \
&& go build -ldflags="-w -s" -o bin/linux/init_app cmd/init_app/main.go
&& cd .. && export GOOS=linux \
&& go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/manager cmd/manager/main.go \
&& go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/report_server cmd/report_server/main.go \
&& go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/sinker cmd/sinker/main.go \
&& go build -tags netgo -ldflags "-s -w" -trimpath -buildvcs=false -o bin/linux/init_app cmd/init_app/main.go
echo "build success"

View File

@ -8,9 +8,19 @@ import (
"log"
)
//初始化clickhouse 表数据
func Init() {
func CreateDb() (func(), error) {
config := model.GlobConfig.Comm.ClickHouse
dbSource := fmt.Sprintf(
"tcp://%s:%s?username=%s&password=%s&compress=true&database=default",
config.IP, config.Port, config.Username, config.Pwd)
var err error
db.ClickHouseSqlx, err = db.NewSQLX("clickhouse", dbSource, config.MaxOpenConns, config.MaxIdleConns)
if err != nil {
log.Println(fmt.Sprintf("clickhouse 创建 "+model.GlobConfig.Comm.ClickHouse.DbName+" 失败:%s", err.Error()))
panic(err)
}
defer db.ClickHouseSqlx.Close()
_, err = db.ClickHouseSqlx.Exec(` create database if not exists ` + model.GlobConfig.Comm.ClickHouse.DbName + ` ` + sinker.GetClusterSql())
@ -18,6 +28,12 @@ func Init() {
log.Println(fmt.Sprintf("clickhouse 建库 "+model.GlobConfig.Comm.ClickHouse.DbName+" 失败:%s", err.Error()))
panic(err)
}
return func() {}, nil
}
// 初始化clickhouse 表数据
func Init() (func(), error) {
var err error
_, err = db.ClickHouseSqlx.Exec(`DROP TABLE IF EXISTS xwl_acceptance_status` + sinker.GetClusterSql() + `;`)
@ -102,4 +118,6 @@ func Init() {
}
log.Println("初始化CK数据完成")
return func() {}, nil
}

View File

@ -36,6 +36,7 @@ func main() {
application.WithConfigFileExt(configFileExt),
application.RegisterInitFnObserver(application.InitLogs),
application.RegisterInitFnObserver(application.InitMysql),
application.RegisterInitFnObserver(ck.CreateDb),
application.RegisterInitFnObserver(application.InitClickHouse),
)

View File

@ -36,8 +36,8 @@
"mysql": {
"username":"root",
"pwd":"dev123",
"ip":"192.168.78.128",
"port":"3306",
"ip":"192.168.6.83",
"port":"13306",
"dbName":"databi",
"maxOpenConns":10,
"maxIdleConns":10
@ -45,7 +45,7 @@
"clickhouse": {
"username":"root",
"pwd":"dev123",
"ip":"192.168.78.128",
"ip":"192.168.6.83",
"port":"9000",
"dbName":"databi",
"clusterName":"",
@ -66,7 +66,7 @@
"realTimeDataGroup": "realTimeDataGroup2"
},
"redis": {
"addr":"192.168.78.128:6379",
"addr":"192.168.6.83:6379",
"passwd":"",
"db": 7,
"maxIdle": 10,

View File

@ -52,12 +52,12 @@ func NewSQLX(driverName, dbSource string, maxOpenConns, maxIdleConns int) (db *s
if err != nil {
return nil, fmt.Errorf("sqlx ping driver %v source %v error:%v", driverName, dbSource, err)
}
go func() {
for {
err = db.Ping()
if err != nil {
log.Println("mysql db can't connect!")
log.Printf("mysql db can't connect!:%v", err)
}
time.Sleep(time.Minute)
}

View File

@ -1,8 +1,11 @@
FROM openjdk:8-jdk-alpine
FROM harbor.devops.u.niu/tools/alpine:3.21
RUN apk add libc6-compat && apk add tzdata
WORKDIR /data
COPY init_app .
COPY linux/init_app .
RUN mkdir -p config

View File

@ -1,8 +1,10 @@
FROM openjdk:8-jdk-alpine
FROM harbor.devops.u.niu/tools/alpine:3.21
RUN apk add libc6-compat && apk add tzdata
WORKDIR /data
COPY manager .
COPY linux/manager .
RUN mkdir -p config

View File

@ -0,0 +1,11 @@
FROM harbor.devops.u.niu/tools/alpine:3.21
RUN apk add libc6-compat && apk add tzdata
WORKDIR /data
COPY linux/report_server .
RUN mkdir -p config
CMD ["./report_server", "-configFileDir=./config"]

View File

@ -0,0 +1,11 @@
FROM harbor.devops.u.niu/tools/alpine:3.21
RUN apk add libc6-compat && apk add tzdata
WORKDIR /data
COPY linux/sinker .
RUN mkdir -p config
CMD ["./sinker", "-configFileDir=./config"]

18
ops/docker/build_all.sh Executable file
View File

@ -0,0 +1,18 @@
#!/bin/bash
set -e
apps=(init manager reporter sinker)
build_ctx="../../bin/linux"
img_prefix="harbor.gamegold.net.cn/bi"
img_tag="1.0.1"
cp -rf ../../bin/linux .
for app in "${apps[@]}"; do
echo "准备构建:$app"
docker build -t $img_prefix/$app:$img_tag --file Dockerfile_$app .
docker push $img_prefix/$app:$img_tag
done
rm -rf linux

View File

@ -0,0 +1,30 @@
services:
manager:
image: harbor.devops.u.niu/bi/manager:1.0.0
restart: always
volumes:
- ./logs:/data/logs
- ./config:/data/config
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
ports:
- 11090:8090
reporter:
image: harbor.devops.u.niu/bi/reporter:1.0.0
restart: always
volumes:
- ./logs:/data/logs
- ./config:/data/config
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
ports:
- 11091:8091
sinker:
image: harbor.devops.u.niu/bi/sinker:1.0.0
restart: always
volumes:
- ./logs:/data/logs
- ./config:/data/config
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone

8
ops/docker/run.sh Normal file
View File

@ -0,0 +1,8 @@
#!/bin/bash
set -e
docker pull harbor.devops.u.niu/bi/init:1.0.0
docker run -ti -v ./config:/data/config -v /etc/localtime:/etc/localtime -v /etc/timezone:/etc/timezone harbor.devops.u.niu/bi/init:1.0.0
docker compose up -d

View File

@ -10,7 +10,14 @@ import (
var TokenBucket sync.Map
func GetUUid() string {
flake := sonyflake.NewSonyflake(sonyflake.Settings{})
flake := sonyflake.NewSonyflake(sonyflake.Settings{
MachineID: func() (uint16, error) {
return uint16(1), nil
},
})
if flake == nil {
log.Printf("new sony flake error!!")
}
id, err := flake.NextID()
if err != nil {
log.Println("err", err)

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -3,7 +3,8 @@ ENV = 'development'
# base api
# 开发环境
VUE_APP_BASE_API = 'http://localhost:8090/'
#VUE_APP_BASE_API = 'http://192.168.6.83:11090/'
VUE_APP_BASE_API = 'http://192.168.78.128:8090/'
VUE_APP_BASE_TITLE = '铸龙-埋点数据分析平台(开发)'
# vue-cli uses the VUE_CLI_BABEL_TRANSPILE_MODULES environment variable,
# to control whether the babel-plugin-dynamic-import-node plugin is enabled.

View File

@ -598,6 +598,7 @@ export default {
return
}
this.metaEventList = res.data.event_name_list
console.log("get meta zhibiao:", res.data)
const attributeMap = res.data.attributeMap
const allAttrOptions = []

View File

@ -50,7 +50,7 @@ module.exports = {
changeOrigin: true,
},*/
[process.env.VUE_APP_BASE_API]: {
target: `http://192.168.78.128:${port}`,
target: `http://192.168.78.128:${port}/mock`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''