创建者飞行员基础设施
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 | redis 7缓存 |
对于Azure生产:
creatorpilot-api仍然是公共Azure容器应用程序creatorpilot-mcp仍然是内部Azure容器应用程序- PostgreSQL应该是PostgreSQL灵活服务器的Azure数据库
- Redis应该是Redis的Azure缓存
- 推送通知的Firebase凭据应仅作为机密支持文件安装到API容器中
快速开始
# From this directory
docker compose build
docker compose updocker-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/callbackAzure生产说明
- MCP是该架构中唯一需要PostgreSQL和Redis直接连接的运行时服务。
- 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://
/api/v1/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。
最小切割
- 为PostgreSQL灵活服务器创建Azure数据库,为Redis创建Azure缓存。
- 创建PostgreSQL数据库和应用程序用户。
- 如果需要,还原现有的PostgreSQL数据。
- 使用以下命令对Azure PostgreSQL运行MCP Alembic迁移
POSTGRES_URL. - 使用Azure PostgreSQL和Redis值更新MCP Azure env/secrets。
- 更新API
MCP_BASE_URL到内部Azure MCP URL。 - 将Firebase服务帐户JSON装入API容器并设置
FIREBASE_CREDENTIALS=/secrets/firebase.json. - 将Google Play服务帐户JSON装入API容器并设置
GOOGLE_PLAY_SERVICE_ACCOUNT_FILE到那座山。 - 集
GOOGLE_PLAY_RTDN_TOKEN在API上,并将Pub/Sub推送配置为 `POST https://
/api/v1/google-play/rtdn?token=`.
- 集
INTERNAL_SERVICE_TOKEN对API和MCP二者进行相同的随机值。 - 集 `API_INTERNAL_BASE_URL=https://
` 在MCP上,因此RTDN-三重生命周期警报可以通过API发送。
- 集
APPLICATIONINSIGHTS_CONNECTION_STRING如果您想要Azure Monitor跟踪和故障遥测,请同时在API和MCP上。 - 重新启动或重新部署API和MCP容器应用程序,以便在启动时可以使用新的Google Play、SMTP、internal-to-ken和遥测env vars。
- 验证MCP运行状况、DB连接、Redis连接、API-to-MCP调用、Application Insights遥测、API通知测试路径和RTDN webhook路径。
