diff --git a/server/Dockerfile b/server/Dockerfile index 05787615254ffdddfd00d90263ffa372ceb7ab27..a38135cccfd65a42584341cbb59ea7b4392ca433 100644 --- a/server/Dockerfile +++ b/server/Dockerfile @@ -1,26 +1,21 @@ -FROM centos:7.6.1810 +FROM golang:alpine as builder +RUN apk add --update --no-cache yarn make g++ -# 设置go mod proxy 国内代理 -# 设置golang path -ENV GOPROXY=https://goproxy.io GOPATH=/gopath PATH="${PATH}:/usr/local/go/bin" -# 定义使用的Golang 版本 -ARG GO_VERSION=1.13.3 +ENV GOPROXY=https://goproxy.cn,https://goproxy.io,direct \ + GO111MODULE=on \ + CGO_ENABLED=1 +WORKDIR /go/src/gin-vue-admin +RUN go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct +COPY . . +RUN go env && go list && go build -v -a -ldflags "-extldflags \"-static\" " -o gvadmin . -# 安装 golang 1.13.3 -RUN yum install -y wget && \ - yum install -y wqy-microhei-fonts wqy-zenhei-fonts && \ - wget "https://dl.google.com/go/go$GO_VERSION.linux-amd64.tar.gz" && \ - rm -rf /usr/local/go && \ - tar -C /usr/local -xzf "go$GO_VERSION.linux-amd64.tar.gz" && \ - rm -rf *.tar.gz && \ - go version && go env; - - -WORKDIR $GOPATH -COPY . gin-vue - -RUN cd gin-vue && go build -o app; +WORKDIR /app +COPY --from=builder /go/src/gin-vue-admin/gvadmin . +COPY --from=builder /go/src/gin-vue-admin/db.db . +COPY --from=builder /go/src/gin-vue-admin/config.yaml . +COPY --from=builder /go/src/gin-vue-admin/resource ./resource EXPOSE 8888 -CMD ["gin-vue/app"] \ No newline at end of file +CMD ["gvadmin/app"] + diff --git a/server/api/v1/exa_file_upload_download.go b/server/api/v1/exa_file_upload_download.go index 2aeb468add2685a726819c2f1e658f420552da9d..56ab422de26476974c9207eda3cebf624d08a71b 100644 --- a/server/api/v1/exa_file_upload_download.go +++ b/server/api/v1/exa_file_upload_download.go @@ -27,7 +27,7 @@ func UploadFile(c *gin.Context) { response.FailWithMessage(fmt.Sprintf("上传文件失败,%v", err), c) } else { //文件上传后拿到文件路径 - err, filePath, key := utils.Upload(header, USER_HEADER_BUCKET, USER_HEADER_IMG_PATH) + err, filePath, key := utils.Upload(header) if err != nil { response.FailWithMessage(fmt.Sprintf("接收返回值失败,%v", err), c) } else { @@ -45,7 +45,6 @@ func UploadFile(c *gin.Context) { response.FailWithMessage(fmt.Sprintf("修改数据库链接失败,%v", err), c) } else { response.OkDetailed(resp.ExaFileResponse{File: file}, "上传成功", c) - } } } @@ -65,7 +64,7 @@ func DeleteFile(c *gin.Context) { if err != nil { response.FailWithMessage(fmt.Sprintf("删除失败,%v", err), c) } else { - err = utils.DeleteFile(USER_HEADER_BUCKET, f.Key) + err = utils.DeleteFile(f.Key) if err != nil { response.FailWithMessage(fmt.Sprintf("删除失败,%v", err), c) diff --git a/server/api/v1/sys_user.go b/server/api/v1/sys_user.go index 146a5291a2d9a2bcdd85bfa82e63472891bd93d5..90b1db157766f97997789e2cb7d747778facc5fc 100644 --- a/server/api/v1/sys_user.go +++ b/server/api/v1/sys_user.go @@ -18,11 +18,6 @@ import ( "time" ) -const ( - USER_HEADER_IMG_PATH string = "http://qmplusimg.henrongyi.top" - USER_HEADER_BUCKET string = "qm-plus-img" -) - // @Tags Base // @Summary 用户注册账号 // @Produce application/json @@ -172,7 +167,7 @@ func UploadHeaderImg(c *gin.Context) { response.FailWithMessage(fmt.Sprintf("上传文件失败,%v", err), c) } else { //文件上传后拿到文件路径 - err, filePath, _ := utils.Upload(header, USER_HEADER_BUCKET, USER_HEADER_IMG_PATH) + err, filePath, _ := utils.Upload(header) if err != nil { response.FailWithMessage(fmt.Sprintf("接收返回值失败,%v", err), c) } else { diff --git a/server/config.yaml b/server/config.yaml index 51267d7ab8fbea22e8078d8521fcbc1f092f932e..74680934985ba21b2845b42a4a10132d99761c14 100644 --- a/server/config.yaml +++ b/server/config.yaml @@ -17,17 +17,20 @@ mysql: config: 'charset=utf8&parseTime=True&loc=Local' max-idle-conns: 10 max-open-conns: 10 - log-mode: true + log-mode: false + #sqlite 配置 sqlite: path: db.db log-mode: true config: 'loc=Asia/Shanghai' + # oss configuration qiniu: access-key: '25j8dYBZ2wuiy0yhwShytjZDTX662b8xiFguwxzZ' secret-key: 'pgdbqEsf7ooZh7W3xokP833h3dZ_VecFXPDeG5JY' - + bucket: 'qm-plus-img' + img-path: 'http://qmplusimg.henrongyi.top' # redis configuration redis: addr: '127.0.0.1:6379' diff --git a/server/config/config.go b/server/config/config.go index 47bffe9f945ef44667fe514b3c703799fd8d959d..53d1ca5e316073864afb44b18ffd5e86b26e56ea 100644 --- a/server/config/config.go +++ b/server/config/config.go @@ -46,6 +46,8 @@ type Redis struct { type Qiniu struct { AccessKey string `mapstructure:"access-key" json:"accessKey" yaml:"access-key"` SecretKey string `mapstructure:"secret-key" json:"secretKey" yaml:"secret-key"` + Bucket string `mapstructure:"bucket" json:"bucket" yaml:"bucket"` + ImgPath string `mapstructure:"img-path" json:"imgPath" yaml:"img-path"` } type Captcha struct { diff --git a/server/initialize/mysql.go b/server/initialize/mysql.go index 9b4d71cbfbc77cfdae8d3a2c94fb9e7e9b612d07..ee61ff9a5f147c203a3d705ae627ac68a36c2ab6 100644 --- a/server/initialize/mysql.go +++ b/server/initialize/mysql.go @@ -4,13 +4,15 @@ import ( "gin-vue-admin/global" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" + "os" ) //初始化数据库并产生数据库全局变量 func Mysql() { admin := global.GVA_CONFIG.Mysql if db, err := gorm.Open("mysql", admin.Username+":"+admin.Password+"@("+admin.Path+")/"+admin.Dbname+"?"+admin.Config); err != nil { - global.GVA_LOG.Error("DEFAULTDB数据库启动异常", err) + global.GVA_LOG.Error("MySQL启动异常", err) + os.Exit(0) } else { global.GVA_DB = db global.GVA_DB.DB().SetMaxIdleConns(admin.MaxIdleConns) diff --git a/server/utils/upload.go b/server/utils/upload.go index ee182c2ae07b971d738ca2ee20b7a077e584bb6d..f2bbb7817646e0460b40def5d615c809dd7853d5 100644 --- a/server/utils/upload.go +++ b/server/utils/upload.go @@ -10,15 +10,12 @@ import ( "time" ) -var accessKey string = global.GVA_CONFIG.Qiniu.AccessKey // 你在七牛云的accessKey 这里是我个人测试号的key 仅供测试使用 恳请大家不要乱传东西 -var secretKey string = global.GVA_CONFIG.Qiniu.SecretKey // 你在七牛云的secretKey 这里是我个人测试号的key 仅供测试使用 恳请大家不要乱传东西 - // 接收两个参数 一个文件流 一个 bucket 你的七牛云标准空间的名字 -func Upload(file *multipart.FileHeader, bucket string, urlPath string) (err error, path string, key string) { +func Upload(file *multipart.FileHeader) (err error, path string, key string) { putPolicy := storage.PutPolicy{ - Scope: bucket, + Scope: global.GVA_CONFIG.Qiniu.Bucket, } - mac := qbox.NewMac(accessKey, secretKey) + mac := qbox.NewMac(global.GVA_CONFIG.Qiniu.AccessKey, global.GVA_CONFIG.Qiniu.SecretKey) upToken := putPolicy.UploadToken(mac) cfg := storage.Config{} // 空间对应的机房 @@ -43,16 +40,15 @@ func Upload(file *multipart.FileHeader, bucket string, urlPath string) (err erro fileKey := fmt.Sprintf("%d%s", time.Now().Unix(), file.Filename) // 文件名格式 自己可以改 建议保证唯一性 err = formUploader.Put(context.Background(), &ret, upToken, fileKey, f, dataLen, &putExtra) if err != nil { - fmt.Println(err) - //qmlog.QMLog.Info(err) + global.GVA_LOG.Error("upload file fail:", err) return err, "", "" } - return err, urlPath + "/" + ret.Key, ret.Key + return err, global.GVA_CONFIG.Qiniu.ImgPath + "/" + ret.Key, ret.Key } -func DeleteFile(bucket string, key string) error { +func DeleteFile(key string) error { - mac := qbox.NewMac(accessKey, secretKey) + mac := qbox.NewMac(global.GVA_CONFIG.Qiniu.AccessKey, global.GVA_CONFIG.Qiniu.SecretKey) cfg := storage.Config{ // 是否使用https域名进行资源管理 UseHTTPS: false, @@ -61,7 +57,7 @@ func DeleteFile(bucket string, key string) error { // 如果没有特殊需求,默认不需要指定 //cfg.Zone=&storage.ZoneHuabei bucketManager := storage.NewBucketManager(mac, &cfg) - err := bucketManager.Delete(bucket, key) + err := bucketManager.Delete(global.GVA_CONFIG.Qiniu.Bucket, key) if err != nil { fmt.Println(err) return err diff --git a/web/src/view/example/upload/upload.vue b/web/src/view/example/upload/upload.vue index f1d96e28a8385193c7aeeda84b7688f8a2c96580..f05ae8f8023f90f7552be43c82a0bc072bd89142 100644 --- a/web/src/view/example/upload/upload.vue +++ b/web/src/view/example/upload/upload.vue @@ -1,153 +1,175 @@ - + \ No newline at end of file +}; + diff --git a/web/src/view/login/login.vue b/web/src/view/login/login.vue index cd7879b4309949c56d3e0e1c80c6cc10fc736797..e10d53b99c55038c12fd91822477cdacb6f0bba0 100644 --- a/web/src/view/login/login.vue +++ b/web/src/view/login/login.vue @@ -3,19 +3,31 @@

- +

- + - + - + @@ -25,7 +37,13 @@ placeholder="请输入验证码" maxlength="10" /> - 请输入验证码 + 请输入验证码 登 录 @@ -37,79 +55,79 @@