Как передавать изображения с бэкенда на фронтенд
У меня есть приложение со следующими тремя различными контейнерами 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