Django 5.x部署至DO App平台遇/staticfiles目录不存在问题求助
解决Django部署到DigitalOcean App平台报错
directory /workspace/staticfiles does not exist 问题原因
DigitalOcean App平台部署流程默认期望静态文件收集到/workspace/staticfiles目录,但你的配置中STATIC_ROOT设置为BASE_DIR / 'static',且项目根目录未创建staticfiles目录,导致部署时找不到该路径。
解决方案
方案1:修改STATIC_ROOT为平台预期路径
在settings.py中调整STATIC_ROOT配置:
STATIC_ROOT = BASE_DIR / 'staticfiles'
执行collectstatic命令时,会将静态文件(即使最终上传到DO Spaces)收集到平台预期的目录,规避路径不存在的错误。
方案2:提前创建staticfiles目录
在项目根目录手动创建staticfiles目录,为避免Git忽略空目录,可在目录内添加一个空的.gitkeep文件,然后提交到代码仓库。部署时平台就能识别到该目录。
方案3:调整DO App部署构建命令
进入DigitalOcean App的部署设置,在构建命令中先添加创建目录的指令:
mkdir -p staticfiles && python manage.py collectstatic --noinput
即使完全依赖DO Spaces存储静态文件,这条命令也能提前创建平台需要的目录,避免报错。
额外配置修正(避免后续问题)
你的AWS_S3_ENDPOINT_URL配置有误,应设置为DO Spaces的区域端点,而非自定义域名:
AWS_S3_ENDPOINT_URL = f'https://{AWS_REGION}.digitaloceanspaces.com'
若使用自定义域名或CDN,再将AWS_S3_CUSTOM_DOMAIN设置为对应的域名即可。
内容的提问来源于stack exchange,提问作者Manoj Kumar
相关产品推荐
相关产品推荐

