Невозможно выполнить push в heroku с помощью cloudinary, хранящего мои статические файлы

Я пытаюсь использовать cloudinary для хранения медиа и статических файлов для моего проекта django. Сначала я изменил настройки так, чтобы медиа файлы хранились в cloudinary и переместил их в heroku, и все работало нормально, за исключением того, что статические файлы не загружались. Поэтому я снова изменил настройки так, чтобы статические файлы также хранились в cloudinary. Локально все работает нормально с DEBUG=False. Когда я вижу источник страницы html локально, он получает файлы css и javascript из cloudinary. Затем я попытался перенести его на heroku с помощью git push heroku master. Но я получаю следующую ошибку в журналах heroku:

У меня уже есть CLOUD_NAME, API_KEY и API_SECRET в качестве переменных окружения на heroku. Он также показывает The command '/bin/sh -c python manage.py collectstatic --noinput' returned a non-zero code: 1, который находится в моем DockerFile:


    FROM python:3.10
    
    
    # setting work directory
    WORKDIR /usr/src/app
    
    
    # env variables
    ENV PYTHONUNBUFFERED 1
    ENV PYTHONDONTWEITEBYTECODE 1
    ENV DEBUG 0
    
    # install psycopg dependencies
    RUN apt-get update && apt-get install -y \
        build-essential \
        libpq-dev \
        && rm -rf /var/lib/apt/lists/*
    
    
    # install dependencies
    RUN pip install --upgrade pip
    COPY requirements.txt .
    RUN pip install -r requirements.txt
    
    
    COPY . .
    
    
    RUN python manage.py collectstatic --noinput
    
    
    RUN adduser -u 99 myuser
    USER myuser
    
    
    CMD gunicorn ramrobazar.wsgi:application --bind 0.0.0.0:$PORT

А вот мой settings.py:


    INSTALLED_APPS = [
        'phonenumber_field',
        'ramrobazar.account.apps.AccountConfig',
        'ramrobazar.dashboard.apps.DashboardConfig',
        'ramrobazar.inventory.apps.InventoryConfig',
        'ramrobazar.drf.apps.DrfConfig',
        'ramrobazar.demo.apps.DemoConfig',
        'mptt',
        'rest_framework',
        'rest_framework.authtoken',
        'rest_framework_simplejwt.token_blacklist',
    
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
    
        'cloudinary_storage',
    
        'django.contrib.staticfiles',
    
        'cloudinary',
        'corsheaders',
    ]
    
    MIDDLEWARE = [
        
        
        'django.middleware.security.SecurityMiddleware',
    
        'corsheaders.middleware.CorsMiddleware',
        
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    ]
    
    STATIC_URL = 'static/'
    
    STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
    
    STATICFILES_STORAGE = 'cloudinary_storage.storage.StaticHashedCloudinaryStorage'
    
    MEDIA_URL = 'media/'
    
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    
    CLOUDINARY_STORAGE = {
        'CLOUD_NAME': os.environ.get('CLOUD_NAME'),
        'API_KEY': os.environ.get('API_KEY'),
        'API_SECRET': os.environ.get('API_SECRET'),
    }
    
    DEFAULT_FILE_STORAGE = 'cloudinary_storage.storage.MediaCloudinaryStorage'

Это мой первый опыт использования heroku и cloudinary. Если у кого-то есть идеи о том, в чем может быть проблема, пожалуйста, поделитесь ими. Если требуется дополнительная информация, пожалуйста, спрашивайте.

Вернуться на верх