Shopify Remix应用部署fly.io后无法运行求助
Shopify Remix应用Fly.io部署加载失败排查
问题背景
基于Shopify官方shopify-app-remix包开发应用,选择Fly.io平台部署,采用Prisma+PostgreSQL数据库,已按Fly.io文档创建Postgres集群并关联应用。应用构建部署成功,但始终处于加载状态无法正常运行,Fly.io机器日志如下:
2024-02-07T12:05:32.344 app[148ed727f93de8] den [info] INFO Preparing to run: `docker-entrypoint.sh node` as root 2024-02-07T12:05:32.353 app[148ed727f93de8] den [info] INFO [fly api proxy] listening at /.fly/api 2024-02-07T12:05:32.355 app[148ed727f93de8] den [info] 2024/02/07 12:05:32 listening on [fdaa:6:b09:a7b:15c:8976:9a82:2]:22 (DNS: [fdaa::3]:53) 2024-02-07T12:05:32.442 runner[148ed727f93de8] den [info] Machine started in 595ms 2024-02-07T12:05:33.354 app[148ed727f93de8] den [info] INFO Main child exited normally with code: 0 2024-02-07T12:05:33.354 app[148ed727f93de8] den [info] INFO Starting clean up. 2024-02-07T12:05:33.355 app[148ed727f93de8] den [info] WARN hallpass exited, pid: 316, status: signal: 15 (SIGTERM) 2024-02-07T12:05:33.360 app[148ed727f93de8] den [info] 2024/02/07 12:05:33 listening on [fdaa:6:b09:a7b:15c:8976:9a82:2]:22 (DNS: [fdaa::3]:53) 2024-02-07T12:05:33.445 proxy[148ed727f93de8] den [info] machine started in 1.602390375s 2024-02-07T12:05:34.355 app[148ed727f93de8] den [info] [ 2.363003] reboot: Restarting system 2024-02-07T12:05:34.520 runner[148ed727f93de8] den [info] machine exited with exit code 0, not restarting 2024-02-07T12:05:40.864 proxy[148ed727f93de8] den [info] waiting for machine to be reachable on 0.0.0.0:8081 (waited 7.418556817s so far) 2024-02-07T12:05:46.867 proxy[148ed727f93de8] den [info] waiting for machine to be reachable on 0.0.0.0:8081 (waited 13.421951594s so far) 2024-02-07T12:05:52.805 proxy[148ed727f93de8] den [info] waiting for machine to be reachable on 0.0.0.0:8081 (waited 19.36011226s so far) 2024-02-07T12:05:57.808 proxy[148ed727f93de8] den [error] failed to connect to machine: gave up after 15 attempts (in 24.362882318s) 2024-02-07T12:05:58.064 proxy[e2865373c17658] den [info] Starting machine 2024-02-07T12:05:58.259 app[e2865373c17658] den [info] [ 0.057848] PCI: Fatal: No config space access function found 2024-02-07T12:05:58.477 app[e2865373c17658] den [info] INFO Starting init (commit: bfa79be)... 2024-02-07T12:05:58.548 app[e2865373c17658] den [info] INFO Preparing to run: `docker-entrypoint.sh node` as root 2024-02-07T12:05:58.557 app[e2865373c17658] den [info] INFO [fly api proxy] listening at /.fly/api 2024-02-07T12:05:58.560 app[e2865373c17658] den [info] 2024/02/07 12:05:58 listening on [fdaa:6:b09:a7b:15c:54aa:4c7e:2]:22 (DNS: [fdaa::3]:53)
日志关键信息分析
- 进程启动后立即退出:
INFO Main child exited normally with code: 0表明Node进程启动后没有持续运行,直接正常退出,导致Fly.io代理无法连接到应用端口。 - 端口连接失败:代理一直在尝试连接
0.0.0.0:8081,但由于进程已退出,最终连接超时失败。 - 重启循环:机器重启后重复同样的流程,进程启动即退出,无法提供服务。
排查与修复步骤
- 修正启动命令:检查
fly.toml中的cmd配置,应该使用Shopify Remix应用的启动脚本(npm start或yarn start),而非直接执行node命令。当前日志显示启动命令为docker-entrypoint.sh node,缺少指向应用入口的参数或正确的启动脚本。 - 验证环境变量:确保所有必要的环境变量已正确设置:
- Shopify相关:
SHOPIFY_API_KEY、SHOPIFY_API_SECRET、SCOPES、HOST - 数据库相关:
DATABASE_URL(需与Fly.io Postgres集群的连接字符串一致)
- Shopify相关:
- 本地复现问题:在本地构建生产版本(
npm run build)并启动(npm start),查看是否有报错信息,多数情况下本地能复现同样的启动失败问题。 - 获取详细应用日志:执行
fly logs -a <你的应用名称>实时查看应用的输出日志,当前日志仅显示进程状态,缺少应用自身的启动报错信息,可调整日志级别获取更多细节。 - 端口配置校验:确认应用监听端口为8081(Fly.io代理等待的端口),Shopify Remix默认监听3000,需设置环境变量
PORT=8081,或在fly.toml中配置端口映射。
内容的提问来源于stack exchange,提问作者Ronak Panchal
相关产品推荐
相关产品推荐

