From b8f4ac4e389a300e66a912b63884b958e8c3a0f5 Mon Sep 17 00:00:00 2001 From: kanade Date: Tue, 12 Jul 2022 16:35:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=B5=8B=E8=AF=95=E6=9C=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .drone.yml | 68 +++++++++++++++++++++++++++++++++++++++++++ Dockerfile | 16 ++++++++++ Dockerfile.drone | 8 +++++ configs/config.go | 10 +++++++ internal/dbc/mysql.go | 16 ++++++---- internal/dbc/redis.go | 2 +- 6 files changed, 114 insertions(+), 6 deletions(-) create mode 100644 Dockerfile create mode 100644 Dockerfile.drone diff --git a/.drone.yml b/.drone.yml index d9da937..94439a2 100644 --- a/.drone.yml +++ b/.drone.yml @@ -47,6 +47,74 @@ volumes: trigger: branch: - master + event: + - push + - merge +--- +kind: pipeline +type: docker +name: test +clone: + disable: true +steps: + - name: clone + image: drone/git + commands: + - echo "172.31.211.15 git.oa00.com" >> /etc/hosts + - git clone $DRONE_REMOTE_URL . + - git checkout $DRONE_COMMIT + - name: restore-cache + image: meltwater/drone-cache + settings: + backend: filesystem + restore: true + cache_key: "gomod" + archive_format: gzip + filesystem_cache_root: "/var/lib/cache" + mount: + - 'mod.pkg' + volumes: + - name: cache + path: "/var/lib/cache" + # Do stuff.. + - name: build + image: golang:1.16-alpine3.13 + environment: + GOMODCACHE: '/drone/src/mod.pkg' + commands: + - GOPROXY=https://goproxy.cn GOSUMDB=off CGO_ENABLED=1 GOOS=linux GOARCH=amd64 go build -ldflags "-X recook/configs.environment=debug" -tags=jsoniter -v -o ./bin/server ./main.go + - name: rebuild-cache + image: meltwater/drone-cache + settings: + backend: filesystem + rebuild: true + cache_key: "gomod" + archive_format: gzip + filesystem_cache_root: "/var/lib/cache" + mount: + - 'mod.pkg' + volumes: + - name: cache + path: "/var/lib/cache" + - name: docker + image: plugins/docker + settings: + dockerfile: "Dockerfile.drone" + repo: harbor.oa00.com/reecook/backend + registry: harbor.oa00.com + username: + from_secret: docker_username + password: + from_secret: docker_password + tags: + - latest +volumes: + - name: cache + host: + path: "/tmp/cache" +trigger: + branch: + - test event: - push - merge \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a3591ea --- /dev/null +++ b/Dockerfile @@ -0,0 +1,16 @@ +# syntax = docker/dockerfile:experimental +# 编译 +FROM golang:1.16-alpine3.13 +COPY . /build/ +WORKDIR /build +RUN GOPROXY=https://goproxy.cn CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-X recook/configs.environment=debug" -tags=jsoniter -v -o ./bin/server ./main.go +# 运行阶段 基础镜像加上时区 +FROM harbor.oa00.com/library/alpine +# 设置源 +# 从编译阶段的中拷贝编译结果到当前镜像中 +COPY --from=0 /build/bin/server /www/wwwroot/recook_v2 +COPY ./credentials /www/wwwroot/credentials +COPY ./qr_resource /www/wwwroot/qr_resource +# 拷贝配置文件 +WORKDIR /www/wwwroot +ENTRYPOINT ["/www/wwwroot/recook_v2"] diff --git a/Dockerfile.drone b/Dockerfile.drone new file mode 100644 index 0000000..1630cf6 --- /dev/null +++ b/Dockerfile.drone @@ -0,0 +1,8 @@ +FROM harbor.oa00.com/library/alpine +# 拷贝编译结果到当前镜像中 +COPY ./bin/server /www/wwwroot/recook_v2 +# 拷贝配置文件 +COPY ./credentials /www/wwwroot/credentials +COPY ./qr_resource /www/wwwroot/qr_resource +WORKDIR /www/wwwroot +ENTRYPOINT ["/www/wwwroot/recook_v2"] \ No newline at end of file diff --git a/configs/config.go b/configs/config.go index 2115cd7..20979ec 100644 --- a/configs/config.go +++ b/configs/config.go @@ -2,6 +2,7 @@ package configs import ( "log" + "os" ) var ( @@ -204,3 +205,12 @@ const ( AlipayPrivateKey = "MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDMQOxcXlyNfnNEui3aipacvfR3NV50lpmVZ1KApskiIy5DjivOyBwvxqB/I7uutPgwlnRsjzzqTx55LbooeSO9UoobBKr3FdxGqjjw4MZNcW5wNiZG3JEQ3OtCgg3o7Y13SYAyKr3DNcHufAKuLKi/IFxmUubfWQ0mHR9ePFMec6ecqpHWsIZmNy5ujY0TMZH1q4Rg1zfUHQu78PWAcsNl+t3Zxs5j1tUo7ZtAfqca6sU+cPXuAx+l/CIhCwX35w39E6J1BYUBczSGvj5+dNAM+dMfuaZCeZo0W9cvhZ6d5Jd3ZCNP/II3S4Sk479kCO6ErG7MyO53//uW8aPnEeAxAgMBAAECggEBAMbjBQRgYdDpa0Zl39ZokoWntc8KKaJvLre7NyvMvBdAmIDxhBjC5CdlSsziN5PD5dQx/MXkqBUj23F1pEpawwFLyOzMG8mjAK3SfMWYqZ+pLzeWkqj3h04bP/2v8+l2vwSDjo/K7KKTyvX0zQtasyoAUdjVKrga12Hgg7XYGbuQdd6UXFqT+BTwQq2JDJEJTYPutN4VyCwiUEGuwCD3TkIFU0d5SGHaOgYBN/btaoPQLm8VnlKRvVr8o9vQ2cr6lDwRtFXkJ3RZJw8UExVPGHAoRlECwqEVA1mJMQ5EPhJrEgNINlE6JiqqCgo1/+58Q9XfYsf7uY8HccFYQP9FIRECgYEA9yXr2N6/vg6sW1PHu5HZWJm0761qq9ed2jZmwNPMD6Xz7Uz9GkYRbxuKvm9YP9qP7pNdH6K14E2gME0AjEmWdx9VId6rKRTR+GGVL01ETnZ62hrG/AEJfBAL+ZVCZYcyMAJYKHomgnY+dvdy3mtxmk8IOT+QkJHrKSX8XBRTxk0CgYEA05G0vfBq4oi3DdO/nrvxSc5K9SLvjW9Rnbr+jgmxw+ZEbqSrsooImfUYUbfkN96X7RePEVLznNYkjJPpp20DNnoauCAfCcjupSPFl1cVEWHs2Czc7HSiqHm7lCDcyyb4q2Vsu6zKmsJIHxEXw76gdUKxvNhiKE0BwHQ/Yqmmu3UCgYEAkGlSFBikBVPhlkOwE4O3cjPuK5YzHFIS5GyhQc8AD6yyiVhRFEcY7Mk1Gu1IrZbyPz9QTKnwiC4TieWUimR9TQG75tyLOqf1wKKUX11QqmBEjKjU2G9qsVlXBfEXKOgEhVT5Wj11vwmEmlMghaJWcQn5Dip8OF1rAVI20T73bIkCgYAtwc+TXNHhGKxugyNoU0GGMuWnSt0Ae9jtAipX0eTud3jJbTftL0lY8tdFpT3oj23QS04X8xbZDr9s3/iiy0Lsn0/0Do5n8VsbwDbV2nGmBsXQozNMuJUNVvaovMrD7TPO7eqsVFylR+uNPIclQK83bSs/qpTgHneIhhvHXOXAmQKBgATsDkvmaVTyGpuzaur7SodTJneNQWQEtnGhaAtbXtPWKpUJHAyIDt7/80FwHOun3/N0CBjzt06T4uvGDzRpYJCsTcoap/JbgdokN4KloRs2Nd7+3O1scep0mJoQWPcYKZxErmTtYgCrSLENbi6sf83xwTWcncFJ9qu1ei13NzPB" // 商户私钥 AlipayAliPublicKey = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtrlT+XcRtKrfgDKB6XxlJbLzQWNMPQ8tTmZvd66OoJDbsnPZuIP7w01XNdIodEAxTFpK4wjUNauqUTSxJimkM8GsPgX/wUW7PR4i25cniHgFFH8vLuRnXcwTptr3LnAjgaSj0nOZYAnOkTcSLoPGgMqBzT/eADkpRvBTRvEhEaMjMPRJ09jVGrIjzpugZ5ECWNBD28nqtAAyDU1jKtHL5l290+WIA838D8sP54Kx8vAwFgMelRg1SljPcSrA2Hnh8qAesiZuJB3pGRKSEwPp51opdM2ARehbXLZsURkjGfB9jVBu9bdKMd7Mm7bun/GD2zM4V07JeFKnYwrcX5lL1wIDAQAB" // 支付宝公钥 ) + +// GetEnv @Title 获取环境变量 +func GetEnv(key, defaultEnv string) string { + env := os.Getenv(key) + if env != "" { + return env + } + return defaultEnv +} diff --git a/internal/dbc/mysql.go b/internal/dbc/mysql.go index 29d2a10..d4f1830 100755 --- a/internal/dbc/mysql.go +++ b/internal/dbc/mysql.go @@ -1,6 +1,7 @@ package dbc import ( + "fmt" "log" "recook/configs" "time" @@ -42,7 +43,12 @@ func SetupMysql() { } else { c = &MysqlConfig{ - Dsn: "db_recook_v2:H6568h4Y7BDsWcYe@tcp(127.0.0.1:3306)/db_recook_v2?timeout=3s&readTimeout=3s&writeTimeout=3s&parseTime=true&loc=Local&charset=utf8mb4,utf8", + Dsn: fmt.Sprintf("%s:%s@tcp(%s:3306)/%s?timeout=3s&readTimeout=3s&writeTimeout=3s&parseTime=true&loc=Local&charset=utf8mb4,utf8", + configs.GetEnv("mysql-username", "db_recook_v2"), + configs.GetEnv("mysql-password", "H6568h4Y7BDsWcYe"), + configs.GetEnv("mysql-host", "127.0.0.1"), + configs.GetEnv("mysql-dbname", "db_recook_v2"), + ), Idle: 10, Active: 500, } @@ -97,15 +103,15 @@ func SetupNewMysql() { } } else { err := mysql2.InitMysql(&mysql2.DbConfig{ - Username: "db_recook_v2", - Password: "H6568h4Y7BDsWcYe", - Host: "127.0.0.1", + Username: configs.GetEnv("mysql-username", "db_recook_v2"), + Password: configs.GetEnv("mysql-password", "H6568h4Y7BDsWcYe"), + Host: configs.GetEnv("mysql-host", "127.0.0.1"), Port: 3306, Extend: "timeout=3s&readTimeout=3s&writeTimeout=3s&parseTime=true&loc=Local&charset=utf8mb4,utf8\n", LogLevel: 4, MaxIdleConns: 10, MaxOpenConns: 500, - DbName: "db_recook_v2", + DbName: configs.GetEnv("mysql-dbname", "db_recook_v2"), }) if err != nil { diff --git a/internal/dbc/redis.go b/internal/dbc/redis.go index 380e400..ea6ce8c 100755 --- a/internal/dbc/redis.go +++ b/internal/dbc/redis.go @@ -24,7 +24,7 @@ var ( ) func SetupRedis() { - addr := "127.0.0.1:6379" + addr := configs.GetEnv("redis", "127.0.0.1:6379") password := "" if configs.IsProductionEnv() {