You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署至Digital Ocean的Strapi重新部署后图片失效问题求助

Strapi部署DigitalOcean后数据异常&Admin面板问题的解决办法

问题根源

  1. SQLite不适合生产环境:SQLite是本地文件型数据库,DigitalOcean应用平台每次部署都会新建容器,之前的数据库文件不会被持久化保留,部署后数据直接清空,这就是文章异常的核心原因。
  2. 内容类型变更未同步:修改内容类型后直接部署,生产环境的数据库结构和本地不一致,会引发数据结构异常,进而导致Admin面板故障。
  3. Admin面板重复构建冲突:每次部署重新构建Admin时,若本地的自定义配置、依赖版本与生产环境不匹配,就会出现加载异常。

具体解决步骤

1. 替换SQLite为托管数据库

DigitalOcean提供现成的PostgreSQL/MySQL托管服务,直接用它替代SQLite:

  • 在DO后台创建托管数据库实例,获取连接信息(主机、端口、用户名、密码、数据库名)。
  • 修改项目的config/env/production/database.js(无此文件则新建),配置生产环境使用托管数据库:
module.exports = ({ env }) => ({
  connection: {
    client: 'postgres', // 选mysql也可
    connection: {
      host: env('DATABASE_HOST'),
      port: env.int('DATABASE_PORT'),
      database: env('DATABASE_NAME'),
      user: env('DATABASE_USER'),
      password: env('DATABASE_PASSWORD'),
      ssl: env.bool('DATABASE_SSL', true), // DO托管数据库必须开启SSL
    },
  },
});
  • 在DO应用平台的环境变量中添加上述数据库参数,确保部署时能正确连接。

2. 用迁移工具同步内容类型变更

每次修改内容类型后,必须生成迁移文件同步到生产环境:

  • 本地安装迁移工具:npm install @strapi/plugin-content-type-builder --save
  • 修改内容类型后,生成迁移文件:yarn strapi generate migration(npm环境用npx strapi generate migration)
  • 将生成的迁移文件提交到Github,部署时Strapi会自动执行迁移,同步数据库结构且不破坏现有数据。
  • 部署前先在本地测试迁移,确认无问题后再提交代码。

3. 避免Admin面板重复构建异常

  • 提交预构建的Admin文件到Github:本地运行yarn build生成.strapi/admin目录,将该目录加入版本控制(确保.gitignore未排除它),部署时直接使用预构建文件,无需重新构建。
  • 锁定依赖版本:将package-lock.json或yarn.lock提交到Github,确保生产环境安装的依赖与本地完全一致,避免版本冲突。
  • 若自定义了Admin面板(如修改UI、添加插件),需将所有自定义代码提交到仓库,确保生产环境能正常加载。

4. 做好数据备份与同步

  • 开启DO托管数据库的自动备份功能,定期备份数据,出现问题时可快速恢复。
  • 本地与生产环境数据分离:不要直接复制本地SQLite数据到生产,而是通过Strapi的内容导出/导入功能手动同步所需内容,避免数据结构不一致引发异常。

内容的提问来源于stack exchange,提问作者Nqobizitha Mlilo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 01:28:37