
npulidom/giger用于图片调整大小/压缩并集成AWS S3上传功能的容器服务(或独立S3上传)。该服务需MongoDB集合存储调整/上传过程信息,支持多配置文件。
libvips图像处理库)构建webpavifjpegpngymlMONGO_URL: MongoDB连接URL,必填(例如:mongodb://mongo/app) MONGO_COLLECTION: MongoDB集合名称,默认值为'giger'(可选) ALLOWED_ORIGINS: CORS跨域访问控制(可选) AWS_ACCESS_KEY_ID: AWS访问密钥ID(可选) AWS_SECRET_ACCESS_KEY: AWS密钥(可选) API_KEY: 基础安全验证的API密钥,需通过请求头'X-Api-Key'传递(可选) MAX_FILE_SIZE: 上传文件的最大限制(字节),默认无限制(可选)
AWS凭证可通过环境变量加载,但生产环境推荐使用IAM角色。
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY建议始终限制权限范围至指定存储桶:
json{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:GetObjectAcl", "s3:PutObject", "s3:PutObjectAcl", "s3:ListBucket" ], "Resource": "arn:aws:s3:::my-bucket-name/*" } ] }
需创建名称为{MONGO_COLLECTION}(默认giger)的集合,且至少包含default配置文件。详见sample/db.json。
javascript{ "name": "default", // 必填,配置文件名称 "bucket": { "name": "my-bucket-name", // 存储桶名称 "basePath": "giger", // 可选,默认根路径 "region": "us-east-1", // 可选,默认"us-east-1" "cloudfront": { // 可选,使用Cloudfront URL覆盖S3 URL "url": "[***]", // Cloudfront URL "excludePath": "giger" // 可选,从Cloudfront URL中排除s3路径 } }, "objects": { "avatar": { // 对象类型名称,例如"avatar"(头像) "bucketPath": "avatars", // 可选,存储桶子路径前缀 "mimeTypes": ["image/jpeg"], // 必填,支持的MIME类型,如['image/jpeg','image/png','image/webp'] "outputFormat": "webp", // 可选,默认与输入格式相同(若支持);可选值:webp, avif, jpeg, png "acl": "public-read", // 可选,默认私有(无ACL) "maxAge": 86400, // 可选,默认1年 "async": false, // 可选,大文件异步分块上传,输出URL将稍后保存至其他集合 "constraints": { // 可选,图片约束条件 "minWidth": 300, // 最小宽度 "minHeight": 300, // 最小高度 "ratio": "3/2" // 宽高比约束 }, "transforms": [ // 转换规则列表,生成不同尺寸的缩略图 { "name": "L", // 缩略图版本名称 "width": 300, // 调整宽度,高度按比例自动计算 "quality": 90 // 质量(1-100) }, { "name": "M", "width": 150, "quality": 80 }, { "name": "S", "width": 100, "quality": 70 }, { "name": "B", "width": 100, "quality": 21, "blur": 8 // 可选,模糊效果(像素值) } ] }, // 支持大文件上传示例 "video": { "bucketPath": "videos/", "mimeTypes": ["video/mp4"], "maxAge": 86400, "async": true } } }
bashdocker pull npulidom/giger
bashdocker run -p 8080:80 --env-file .env npulidom/giger
bash[POST] multipart/form-data Content-Disposition: form-data; name="file"; type="image/jpeg"; filename="some-picture.jpeg" > https://{host}/upload/:profile/:object > https://{host}/upload/:profile/:object/:tag # 示例 [***] [***] [***]
profile:配置文件名称,例如default。object:对象类型名称,例如avatar。tag:可选,自定义值替换自动生成的文件名;设为0或省略则保留自动生成文件名。bash{ "status": "ok", "urls": [ "[***]", "[***]", "[***]", "[***]", "[***]" ], "ratio": "1:1" }
bash{ "status": "error", "error": "SOME_ERROR" }
服务包含./health端点用于健康检查:
bash[GET] https://{host}/health
服务支持通过服务路径路由转发,例如:
bash[***] [***] [***]
使用curl上传文件示例:
bash# 上传图片 curl -F 'file=@sample/lena.jpg' http://g-giger.localhost/upload/default/avatar # 上传视频 curl -F 'file=@sample/some-video.mp4;type=video/mp4' http://g-giger.localhost/upload/default/video
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务