SuperAPI AI 工具集

shopify-app-deployment

部署与运维

查看项目

更新于 10-16 06:28

技能介绍

Shopify 应用部署策略

Shopify 应用的部署与普通网站不同,因为它涉及 Webhook、Admin API 速率限制以及 OAuth 握手。

一、Vercel 问题(超时)

Vercel Serverless 函数存在超时限制(通常为 10 秒至 60 秒)。

问题:Shopify 批量操作、商品同步,或在大型店铺上安装应用,可能耗时超过 60 秒。

结果:出现 504 Gateway Timeout,安装中断。

方案 A:在 Vercel 上使用 Remix(混合模式)

  • 使用 Vercel 承载 UI。
  • 将长时间任务(同步)卸载到独立的 worker(Cloudflare Workers、Inngest 或独立 VPS)。
  • 在 Remix 中使用 Defer 在后端工作时流式输出 UI(但无法解决主线程的硬超时)。

方案 B:VPS / Docker(推荐用于正式应用)

部署到持久化服务器(Fly.io、Railway、DigitalOcean、Hetzner)可消除超时。

工具:Coolify(自托管的 Vercel 替代品)、Dokku,或手动 Docker。

二、部署检查清单

A. 环境变量

确保在 CI/CD 或平台密钥中设置以下变量:

  • SHOPIFY_API_KEY
  • SHOPIFY_API_SECRET
  • SCOPES(必须与代码中完全一致)
  • SHOPIFY_APP_URL(公开 HTTPS URL,例如 https://app.mytitle.com)
  • DATABASE_URL

B. 数据库迁移

在构建期间或作为发布阶段命令运行迁移。

  • Fly.io:在 fly.toml 中使用 release_command。
  • Docker:可在启动应用前的 CMD 脚本中运行 npx prisma migrate deploy。

C. 构建命令

确保为生产环境构建:

npm run build

确保这会运行 remix build 并复制必要的公共资源

三、平台特定配置

Fly.io

由于支持全球区域和 Docker,非常适合 Shopify 应用。

fly.toml 示例:

[build] dockerfile = "Dockerfile"

[env] PORT = "3000"

[http_service] internal_port = 3000 force_https = true auto_stop_machines = true auto_start_machines = true

Coolify / Hetzner

如果想节省成本(每月 5 美元即可获得性能强劲的 VPS)。

  1. 在 VPS 上安装 Coolify。
  2. 连接 GitHub 仓库。
  3. 选择 "Nixpacks" 或 "Docker file"。
  4. 设置环境变量。
  5. 部署。

四、后台任务(关键)

必须为后台任务制定策略。

可选方案:

  • Redis + BullMQ:需要持久化的 Redis 实例。(参见 redis-bullmq 技能)。
  • Inngest / Trigger.dev:Serverless 后台任务。如果不想管理 Redis,这是不错的选择。

五、部署后验证

  1. 安装测试:在开发店铺上安装应用。
  2. Webhook 测试:触发一个 Webhook(例如更新商品),并检查服务器日志。
  3. App Proxy:如果使用了 App Proxy,验证代理 URL 能否正确加载(此处常见 CORS 错误)。