标签:Golang - 星空

背景

最近在调研一款能管理我的tencent-cos的在线管理端软件,然后调研了很多软件,之前试用过nextcloud发现一般,然后看中了minio,看评测说性能比较好,并且支持S3协议。

在实际使用过程中是使用的docker部署,具体命令如下,对应文档可以点击minio-gateway

1
2
3
4
docker run -p 9000:9000 --name minio-s3 \
-e "MINIO_ACCESS_KEY=access_key" \
-e "MINIO_SECRET_KEY=secret_key" \
minio/minio gateway s3 https://cos.ap-beijing.myqcloud.com

然而在我将信息填入以后,发现始终无法创建,提示:ERROR Unable to initialize gateway backend: Could not parse the specified URI.
然而通过中心搜索并不能寻找到结果,然后使用全英文搜索就找到问题所在了,原因是:tencent-cos的bucket命名是以: bucket名+个人的账号数字为命名方式的,和minio的默认创建桶的方式不一样,所以始终提示该错误。

改造过程

既然问题已经找到,剩下的问题就解决问题了,解决问题一般有两种方案,一般是解决创造问题的人,一种是直接解决,然而通过腾讯云的工单并不能解决问题,直接说是第三方的原因导致的,无法进行修改。
直接解决问题也很简单:

  • 先找到minio的github仓库,然后fork到自己的仓库中,
  • 按文件夹查找cmd->gateway->s3->gateway-s3.go文件
  • 然后找到randString这个方法
  • 修改最后的返回值为:return prefix + string(b[0:30-len(prefix)]) + "-123"
  • 此时问题解决。

前言

今年开始接触并且实践到Golang,近期自己写了一个相册的服务,是基于前后端分离的模式,由Go提供rest给web页面使用。在项目前期是直接使用的打包完成的二进制文件执行,在管理方面存在一些不方便的地方,所以周末抽时间将其容器化,实现自动化的部署方案,主要就是采用coding的devops流程,容器化使用的还是docker容器,使用的是alpine的镜像,在这个过程中遇到一些问题,下面会详细讲出,以此记录。