YouTube分析基础设施

CreatorPilot平台的核心基础设施,提供集中化的YouTube数据分析服务,支持移动端优先的开发者体验。

  • by aartikanojia
  • Dockerfile
  • 本地部署
  • 更新于
在 GitHub 查看 aartikanojia/creatorpilot-infra

使用说明

创建者飞行员基础设施

CreatorPilot平台的集中式基础设施——一个移动优先的YouTube分析助手。

此仓库保留了用于开发的本地Docker Compose和用于部署配置的Azure生产布线。

建筑

/createrai
├── creatorpilot-infra    ← Docker configs & orchestration (this repo)
├── creatorpilot-mcp      ← MCP server (YouTube data + AI analysis)
├── creatorpilot-api      ← REST API (auth, user management, Flutter gateway)
└── creatorpilot-mobile   ← Flutter mobile app

服务

服务 端口 描述
creatorpilot api 8000 移动应用程序的FastAPI后端
creatorpilot mcp 8001 用于YouTube分析的mcp服务器
postgres 5433 PostgreSQL 15数据库
redis 6379 MCP短期内存的可选redis缓存

对于Azure生产:

  • creatorpilot-api 仍然是公共Azure容器应用程序
  • creatorpilot-mcp 仍然是内部Azure容器应用程序
  • PostgreSQL应该是PostgreSQL灵活服务器的Azure数据库
  • Redis在封闭测试中是可选的;如果启用,请将Azure Cache for Redis用于MCP短期缓存/内存
  • 推送通知的Firebase凭据应仅作为机密支持文件安装到API容器中

快速开始

# From this directory
docker compose build
docker compose up

docker-compose.yml 仅用于当地发展。它有意使用Docker服务名称,例如 postgres, redis,以及 creatorpilot-mcp.

文件

  • docker-compose.yml --服务编排
  • api.Dockerfile --构建creatorpilot api的配置
  • mcp.Dockerfile --为creatorpilot mcp构建配置
  • .env.example --本地开发环境模板
  • azure.production.env.example --Azure生产环境映射模板

环境变量

复制 .env.example 到 .env 为了地方发展。

Azure生产值不应提交到此仓库。将它们放在Azure容器应用程序secrets/config中,使用 azure.production.env.example 作为参考映射。

本地开发示例:

POSTGRES_URL=postgresql://creatorpilot_admin:creatorpilot_secret@postgres:5432/creatorpilot
DATABASE_URL=postgresql://creatorpilot_admin:creatorpilot_secret@postgres:5432/creatorpilot
POSTGRES_HOST=postgres
REDIS_HOST=redis
MCP_BASE_URL=http://creatorpilot-mcp:8001
GOOGLE_CLIENT_ID=your_id
GOOGLE_CLIENT_SECRET=your_secret
GOOGLE_REDIRECT_URI=http://localhost:8000/auth/youtube/callback

Azure生产说明

  • MCP是此架构中唯一需要PostgreSQL直接连接的运行时服务。Redis连接是可选的,仅用于MCP短期缓存/内存。
  • API生产配置应仅指向MCP的内部Azure URL,除非API代码稍后证明存在DB依赖性。
  • GoogleOAuth应该重定向回公共API回调路由,而不是前端本地主机回调。
  • FIREBASE_CREDENTIALS 应指向已装入的API容器路径,默认为 /secrets/firebase.json.
  • APPLICATIONINSIGHTS_CONNECTION_STRING 可以在API和MCP上设置,以便为请求、异常和出站依赖关系启用Azure Monitor Application Insights遥测。
  • 在Azure容器应用程序中,将Firebase服务帐户JSON作为秘密卷或等效文件装载装载到API容器中。
  • 将Google Play服务帐户JSON装入API容器并设置 GOOGLE_PLAY_SERVICE_ACCOUNT_FILE 走上那条小路。
  • 将Google Play RTDN发布/订阅推送端点配置为 POST https://<public-api-host>/api/v1/google-play/rtdn?token=<GOOGLE_PLAY_RTDN_TOKEN>.
  • 集 GOOGLE_PLAY_RTDN_TOKEN 在API容器应用程序上添加到仅用于Pub/Sub推送URL的长随机共享秘密。
  • 集 INTERNAL_SERVICE_TOKEN 在API和MCP上,因此MCP可以调用受保护的内部API路由,如订阅警报传递。
  • 集 API_INTERNAL_BASE_URL 在MCP上,以便MCP可以调用API的内部警报端点以获取订阅生命周期电子邮件。
  • 可选的订阅警报电子邮件传递使用API SMTP env vars: SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_SENDER_EMAIL, SMTP_RECIPIENT_EMAIL,可选 SMTP_USE_TLS.
  • 添加或旋转Firebase凭据装载后,重新启动或重新部署API容器应用程序。
  • Azure PostgreSQL应该使用TLS sslmode=require.
  • 如果启用了Azure Redis,请使用TLS REDIS_SSL=true 和港口 6380.
  • 不要公开暴露MCP。

最小切割

  1. 为PostgreSQL灵活服务器创建Azure数据库,如果需要,为Redis创建Azure缓存。
  2. 创建PostgreSQL数据库和应用程序用户。
  3. 如果需要,还原现有的PostgreSQL数据。
  4. 使用以下命令对Azure PostgreSQL运行MCP Alembic迁移 POSTGRES_URL.
  5. 使用Azure PostgreSQL值和可选Redis值更新MCP Azure env/secrets。
  6. 更新API MCP_BASE_URL 到内部Azure MCP URL。
  7. 将Firebase服务帐户JSON装入API容器并设置 FIREBASE_CREDENTIALS=/secrets/firebase.json.
  8. 将Google Play服务帐户JSON装入API容器并设置 GOOGLE_PLAY_SERVICE_ACCOUNT_FILE 到那座山。
  9. 集 GOOGLE_PLAY_RTDN_TOKEN 在API上,并将Pub/Sub推送配置为 POST https://<public-api-host>/api/v1/google-play/rtdn?token=<GOOGLE_PLAY_RTDN_TOKEN>.
  10. 集 INTERNAL_SERVICE_TOKEN 对API和MCP二者进行相同的随机值。
  11. 集 API_INTERNAL_BASE_URL=https://<public-api-host> 在MCP上,因此RTDN-三重生命周期警报可以通过API发送。
  12. 集 APPLICATIONINSIGHTS_CONNECTION_STRING 如果您想要Azure Monitor跟踪和故障遥测,请同时在API和MCP上。
  13. 重新启动或重新部署API和MCP容器应用程序,以便在启动时可以使用新的Google Play、SMTP、internal-to-ken和遥测env vars。
  14. 验证MCP运行状况、DB连接、可选Redis连接、API到MPCP调用、Application Insights遥测、API通知测试路径和RTDN webhook路径。