diff --git a/Dockerfile b/Dockerfile index ba4e8f9..d807028 100644 --- a/Dockerfile +++ b/Dockerfile @@ -36,6 +36,11 @@ COPY . . RUN chown -R appuser:appuser /app \ && chmod +x /app/entrypoint.sh +# 在最终阶段,创建必要的目录并设置权限 +RUN mkdir -p /app/media \ + && chown -R appuser:appuser /app/media \ + && chmod 755 /app/media + # 切换到非root用户 USER appuser diff --git a/api/settings.py b/api/settings.py index 0cae2d0..60c96c1 100644 --- a/api/settings.py +++ b/api/settings.py @@ -184,6 +184,5 @@ NINJA_PAGINATION_CLASS = "ninja.pagination.PageNumberPagination" NINJA_PAGINATION_PER_PAGE = 10 -# Media files MEDIA_URL = "/media/" MEDIA_ROOT = BASE_DIR / "media" diff --git a/entrypoint.sh b/entrypoint.sh index 144509a..e2986ce 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -15,6 +15,12 @@ python manage.py collectstatic --noinput # 计算worker数量 (CPU核心数 * 2 + 1) WORKERS=$(python -c 'import multiprocessing; print(multiprocessing.cpu_count() * 2 + 1)') +# 确保媒体目录存在并有正确的权限 +echo "Setting up media directory..." +mkdir -p /app/media +chown -R appuser:appuser /app/media +chmod 755 /app/media + # 启动 Gunicorn echo "Starting Gunicorn with $WORKERS workers..." exec gunicorn api.asgi:application \