我有一个具有以下三个不同 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
仅供参考 [1]:
媒体文件是用户(或管理员)在使用您的应用程序时上传的文件。您不知道有多少个文件、多大或多小、它们的名称如何。虽然静态是项目的一部分,也是源的一部分。因此,如果您将两者放入一个文件夹中,那么用户可能能够覆盖您的 css、js 和 jpg 文件,那么您在部署项目时可能会遇到麻烦。清理或重命名目录将不再是一个选项 - 用户文件都在那里。会出现一些备份、迁移、分片等问题。
要提供图像等静态文件,请参阅此文档 -
[1]。 我无法在 django 中显示图像