Go Redis本地部署高性能图片主色调提取服务 | Eucalyptus部署 img2color-go 所需的环境非常轻量主要包含的核心组件 go语言环境编译用Go 1.21 (建议最新稳定版)。 docker拉起redis容器缓存用Docker 20.10, Docker Compose V2。 拉起Redis容器做缓存在 /val/lib/dockhttps://blog.eucalyptus.cc/2026/06/10/Go-Redis%EF%BC%9A%E6%9C%AC%E5%9C%B0%E9%83%A8%E7%BD%B2%E9%AB%98%E6%80%A7%E8%83%BD%E5%9B%BE%E7%89%87%E4%B8%BB%E8%89%B2%E8%B0%83%E6%8F%90%E5%8F%96%E6%9C%8D%E5%8A%A1/部署img2color-go所需的环境非常轻量主要包含的核心组件go语言环境编译用Go 1.21 (建议最新稳定版)。docker拉起redis容器缓存用Docker 20.10, Docker Compose V2。拉起Redis容器做缓存在/val/lib/docker/redis-img2color目录下创建docker-compose.ymlservices: redis-img2color: image: redis:7-alpine container_name: redis-img2color restart: always ports: - 127.0.0.1:6380:6379 volumes: - /val/lib/docker/redis-img2color:/data command: redis-server --appendonly yes执行启动docker compose up -d克隆代码git clone https://github.com/anzhiyu-c/img2color-go.git cd img2color-go修改包名api/img2color.go为什么要改原代码 (package handler)这是为 Vercel/Serverless 环境设计的“库”模式它没有main函数入口直接go build会报错或者生成无法直接运行的库文件。修改后 (package main)这告诉 Go 编译器这是一个独立的可执行程序。配合我们添加的main函数或原有的入口逻辑才能编译出一个可以在服务器上直接运行的二进制文件 (img2color-server)。# 将 api/img2color.go 第一行的 package handler 替换为 package main sed -i 1s/package handler/package main/ api/img2color.go # 验证一下是否修改成功 head -n 1 api/img2color.go配置环境变量创建/修改.env文件PORT9000 REDIS_ADDRESS127.0.0.1:6380 REDIS_PASSWORD USE_REDIS_CACHEtrue REDIS_DB0 USE_MONGODBfalse MONGO_URI MONGO_DB ALLOWED_REFERERS编译 Go 程序cd /opt/img2color-go go mod tidy go build -o img2color-server ./api/ chmod x img2color-server配置 Systemd 服务创建/etc/systemd/system/img2color.service[Unit] Descriptionimg2color-go Service Afternetwork.target docker.service [Service] Typesimple Userroot WorkingDirectory/opt/img2color-go ExecStart/opt/img2color-go/img2color-server Restarton-failure [Install] WantedBymulti-user.target启动并验证# 重载配置并启动 sudo systemctl daemon-reload sudo systemctl enable --now img2color # 查看日志确认连接成功 sudo journalctl -u img2color -f最终测试curl http://127.0.0.1:9000/api?imghttps://avatars.githubusercontent.com/u/9919?v4反向代理后续可以配置个反向代理将ipport换成域名这里不做过多赘述