如何从后端向前端提供图像

问题描述 投票:0回答:1

我有一个具有以下三个不同 docker 容器的应用程序:- 前端(反应) 后端(django) Nginx 用于从前端提供静态文件,

我正在尝试访问 Kubernetes (minikube) 中的 nginx 网站。来自

minikube service my-service

所有其他数据均从后端容器提供,但只有图像未发送 有人可以帮忙吗?

调试正确并且

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

我将 django 应用程序的名称保留为 django-service, 我应该将 setup.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
django kubernetes nginx django-rest-framework minikube
1个回答
0
投票

仅供参考 [1]:

媒体文件是用户(或管理员)在使用您的应用程序时上传的文件。您不知道有多少个文件、多大或多小、它们的名称如何。虽然静态是项目的一部分,也是源的一部分。因此,如果您将两者放入一个文件夹中,那么用户可能能够覆盖您的 css、js 和 jpg 文件,那么您在部署项目时可能会遇到麻烦。清理或重命名目录将不再是一个选项 - 用户文件都在那里。会出现一些备份、迁移、分片等问题。

要提供图像等静态文件,请参阅此文档 -

在生产中提供静态文件

[1]。 我无法在 django 中显示图像

© www.soinside.com 2019 - 2024. All rights reserved.