- 修复 production.py 存储配置:Django 6.0 已移除 DEFAULT_FILE_STORAGE/ STATICFILES_STORAGE 旧式设置兼容层,改用 STORAGES 字典(此前的写法 实际上早已失效,属于遗留 bug) - 静态文件接入 whitenoise(压缩+哈希文件名+长缓存头),容器化部署下 无需额外 Nginx/CDN 即可正确提供静态文件 - 新增生产 SMTP 邮件配置(EMAIL_HOST/PORT/USER/PASSWORD/USE_TLS/ DEFAULT_FROM_EMAIL),修复线索通知邮件/PIPL 删除确认邮件在生产环境 发不出去的问题 - 新增 docker/Dockerfile(多阶段构建,非 root 用户运行) - 新增 docker/entrypoint.sh(启动时自动 migrate + collectstatic + bootstrap_deployment,均为幂等操作) - 新增 docker-compose.prod.yml(backend + postgres + redis 编排) - 新增 .dockerignore - .env.example 补充 POSTGRES_*/EMAIL_* 环境变量说明
17 lines
558 B
Bash
17 lines
558 B
Bash
#!/bin/sh
|
|
# 容器启动入口:先完成一次性初始化步骤,再把控制权交给 CMD(默认是 gunicorn)。
|
|
# 全部步骤均设计为幂等,可安全地在每次容器启动/滚动升级时重复执行。
|
|
set -e
|
|
|
|
echo "[entrypoint] running database migrations..."
|
|
python manage.py migrate --noinput
|
|
|
|
echo "[entrypoint] collecting static files..."
|
|
python manage.py collectstatic --noinput
|
|
|
|
echo "[entrypoint] bootstrap deployment (superuser + RBAC groups)..."
|
|
python manage.py bootstrap_deployment
|
|
|
|
echo "[entrypoint] starting: $*"
|
|
exec "$@"
|