Как передавать изображения с бэкенда на фронтенд

У меня есть приложение со следующими тремя различными контейнерами docker:. Frontend(react) Back-end(django) Nginx для обслуживания статических файлов из фронтенда,

Я пытаюсь получить доступ к сайту nginx в Kubernetes (minikube).from

minikube service my-service

все остальные данные обслуживаются из контейнера backend, но только изображение не отправляется Кто-нибудь может помочь.

debug is true и

MEDIA_URL = ‘/media/’
MEDIA_ROOT = os.path.join(BASE_DIR ,“/app/media”)

Я сохранил название приложения django как django-service, должен ли я изменить следующие строки в файле setttings.py на django-service ?

ROOT_URLCONF = 'backend.urls'

WSGI_APPLICATION = 'backend.wsgi.application'

Здесь находится файл entrypoint.sh с таким же именем

#!/bin/sh

gunicorn backend.wsgi:application --bind 0.0.0.0:8000

и следующие ресурсы депломата

# Django Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: django-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: django-app
  template:
    metadata:
      labels:
        app: django-app
    spec:
      containers:
      - name: django-container
        image: ash414/e-cart-backend:v1.0
        ports:
        - containerPort: 8000

# Django Service
apiVersion: v1
kind: Service
metadata:
  name: django-service
  labels:
    app: django-app
spec:
  selector:
    app: django-app
  ports:
    - protocol: TCP
      port: 8000
      targetPort: 8000

# Nginx Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-app
  labels:
    app: nginx-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx-app
  template:
    metadata:
      labels:
        app: nginx-app
    spec:
      containers:
      - name: nginx-container
        # Not working images
        # image: e-cart-nginx:latest
        # image: ash414/e-cart-nginx:v1.0v
        # image: ash414/e-cart-nginx-dj4:v1.0
        image: ash414/nginx-app4:v1.0
        ports:
        - containerPort: 80

# Nginx Service
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  labels:
    app: nginx-app
spec:
  selector:
    app: nginx-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80

# NodePort Service
apiVersion: v1
kind: Service
metadata:
  name: my-service
spec:
  type: NodePort
  selector:
    app: nginx-app
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30007

Просто к сведению 1:

STATIC_FILES и MEDIA_FILES - это две разные вещи, и они должны располагаться в двух разных каталогах. Команда collectstatic не имеет не имеет никакого отношения к медиафайлам.

Чтобы сделать медиафайлы доступными, необходимо убедиться, что ваш веб-сервер настроен на обслуживание каталога, в котором хранятся эти файлы (MEDIA_ROOT), а урлы генерируются с использованием атрибута объекта filefield, а не с помощью атрибута url. объекта filefield, а не с помощью тега static. См. Модель поля ссылка | Django documentation | Django и примеры в Управление файлами | Django documentation | Django)

Для обслуживания статических файлов, таких как изображения, обратитесь к этой документации. Обслуживание статических файлов в производстве

Это сообщение на StackOverflow также может помочь вам - Я не могу показать изображения в django

1. https://forum.djangoproject.com/t/static-files-and-newly-generated-images/24535/2

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