Files
Blizzard eaa21585de ci: Docker 单镜像部署 + Gitea 自动发布
- pets-be/Dockerfile:多阶段单镜像,node 构建管理后台 → Go 编译内嵌
  (go:embed)→ alpine 运行。一个容器同时提供 /api 与 /admin,50MB,
  非 root、内置 tzdata 保证按东八区计算每日任务
- deploy/docker-compose.yml:只有一个 app 容器,MySQL/MinIO 用外部现成的,
  容器内 9090 映射宿主机 4000
- deploy/.env.example:全部配置项(MySQL/MinIO/微信/AI/管理员)
- .gitea/workflows/deploy.yml:push 或合并到 main 触发,runner 构建镜像 →
  save 打包 → scp 到服务器 → docker load + compose up -d → 健康检查
- 修复容器化阻塞问题:config.Load 原本强制要求 config.yaml(而它不进 git),
  且 viper 未登记默认值的 key 环境变量绑不上。现补全默认值并把配置文件
  改为可选,纯 .env 即可启动
- 服务端口统一改为 9090

验证:镜像构建通过;本地起完整栈 ping/admin/登录/建表 seed/图片上传全通;
对接真实 MySQL 9.4(sundynix_pet)建表 19 张并 seed 成功。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-25 16:47:49 +08:00

44 lines
1.3 KiB
YAML

server:
port: 9090
mode: debug # debug | release
mysql:
host: 127.0.0.1
port: 3306
user: root
password: root
database: pets
charset: utf8mb4
minio:
endpoint: 127.0.0.1:9000
access_key: sundynix
secret_key: sundynix
bucket: pets
use_ssl: false
public_base_url: http://127.0.0.1:9000 # 拼接可访问的对象 URL
jwt:
secret: change-me-to-a-long-random-string # 生产用 PETS_JWT_SECRET 覆盖
wechat:
app_id: your-wechat-app-id
app_secret: your-wechat-app-secret # 敏感凭证:生产用 PETS_WECHAT_APP_SECRET 环境变量覆盖
auth:
dev_login: true # 仍保留 Mock 登录便于本地 curl 调试;上线可置 false 只留微信登录
admin:
username: sundynix
password: change-me # 启动时若无同名管理员则 seed 此账号
ai:
enabled: false # false 时全部走规则化文案(不烧 token);接大模型改 true
provider: openai # openai 兼容协议,适配 DeepSeek/Qwen(兼容模式)/Gemini(兼容端点)等
base_url: https://api.deepseek.com # 换供应商只改这里 + model
api_key: your-ai-api-key # 敏感:生产用 PETS_AI_API_KEY 环境变量覆盖
model: deepseek-chat
temperature: 0.6
max_tokens: 1024
timeout_sec: 30