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

Strapi V5+Railway应用持久化存储问题:重启后媒体文件丢失

Strapi重启/部署后媒体文件丢失:存储卷配置问题排查与解决

为什么你创建的/strapi_uploads卷无效果?

Strapi默认将媒体文件存储在项目根目录下的./public/uploads(容器内对应绝对路径通常为/opt/app/public/uploads,具体取决于你的容器内项目部署路径)。如果你仅创建了/strapi_uploads卷,但未将其挂载到Strapi实际的文件存储目录,文件仍会保存在容器的临时内部存储中,重启或重建容器时自然会丢失。


正确创建并挂载存储卷的步骤

1. 确认Strapi的实际上传路径

先核对你的Strapi项目配置,确保知道文件存储的准确路径:

  • Strapi v4:查看项目根目录的config/plugins.js,找到upload配置中的path项:
    module.exports = ({ env }) => ({
      upload: {
        config: {
          provider: 'local',
          providerOptions: {
            path: env('UPLOADS_PATH', './public/uploads'), // 默认存储路径
            // 其他配置...
          },
        },
      },
    });
    
  • Strapi v3:查看config/upload.js中的path配置,默认同样为./public/uploads。

容器内的绝对路径是项目根目录加上相对路径,比如项目部署在容器的/opt/app,则绝对路径为/opt/app/public/uploads。

2. 使用Docker卷挂载(生产环境推荐)

  • 创建持久化卷:
    docker volume create strapi_uploads
    
  • 启动容器时,将卷挂载到Strapi的实际上传目录:
    docker run -d \
      -p 1337:1337 \
      -v strapi_uploads:/opt/app/public/uploads \ # 路径需与Strapi配置匹配
      your-strapi-image:latest
    

3. 使用主机目录挂载(开发环境可选)

如果需要直接在主机上访问上传文件,可挂载主机目录:

# 先在主机创建目录并设置权限(Strapi容器用户通常为node,UID/GID为1000)
mkdir -p /host/local/path/strapi_uploads
chown 1000:1000 /host/local/path/strapi_uploads

# 启动容器时挂载
docker run -d \
  -p 1337:1337 \
  -v /host/local/path/strapi_uploads:/opt/app/public/uploads \
  your-strapi-image:latest

排查卷无效的常见原因

  • 挂载路径不匹配:你之前的卷挂载到了/strapi_uploads,但Strapi根本不会往这个目录写文件,自然无法持久化。
  • 权限不足:卷或挂载目录的权限设置错误,Strapi进程无法写入数据,文件会 fallback 到容器临时存储。可进入容器检查:
    docker exec -it [你的容器ID] bash
    ls -l /opt/app/public/uploads # 查看目录权限
    
    解决方法:启动容器时指定用户UID/GID:
    docker run -d \
      -p 1337:1337 \
      -v strapi_uploads:/opt/app/public/uploads \
      -u 1000:1000 \
      your-strapi-image:latest
    
  • 配置被覆盖:检查环境变量或启动脚本是否修改了Strapi的上传路径,导致实际存储位置与挂载路径不一致。

验证配置是否生效

  1. 在Strapi后台上传一张测试图片
  2. 重启容器:docker restart [你的容器ID]
  3. 检查上传目录是否仍有文件:
    docker exec -it [你的容器ID] ls /opt/app/public/uploads
    
  4. 直接访问图片的URL,确认能正常加载

内容的提问来源于stack exchange,提问作者Milos N.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 15:42:33