这是我在带有REST框架的Django应用程序的部署:
#Deployment
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
labels:
service: my-api-service e
name: my-api-deployment
spec:
replicas: 1
template:
metadata:
labels:
name: my-api-selector
spec:
containers:
-
name: nginx
image: nginx
command: [nginx, -g,'daemon off;']
imagePullPolicy: IfNotPresent
volumeMounts:
-
name: shared-disk
mountPath: /static
readOnly: true
-
name: nginx-config
mountPath: /etc/nginx/nginx.conf
subPath: nginx.conf
ports:
-
name: nginx
containerPort: 80
-
env:
-
name: STATIC_ROOT
value: /src/static/
-
name: MEDIA_ROOT
value: /src/media/
-
name: CLIENT_ORIGIN
value: https://marketforce.platinumcredit.co.ke
-
name: DJANGO_SETTINGS_MODULE
value: config.production
-
name: DEBUG
value: "true"
image: localhost:5000/workforce-api:0.2.0
command: [ "./entrypoint.sh" ]
name: my-api-container
imagePullPolicy: IfNotPresent
ports:
-
name: my-api-port
containerPort: 9000
protocol: TCP
volumeMounts:
-
name: shared-disk
mountPath: /src/static
initContainers:
-
name: assets
image: localhost:5000/workforce-api:0.2.0
command: [bash, -c]
args: ["python manage.py collectstatic --noinput"]
command: [bash, -c]
args: ["sleep 10"]
command: [bash, -c]
args: ["cp -r static/* /data"]
imagePullPolicy: IfNotPresent
volumeMounts:
-
mountPath: /data
name: shared-disk
volumes:
-
name: shared-disk
emptyDir: {}
-
name: nginx-config
configMap:
name: nginx-config
我的服务:
# Service
apiVersion: v1
kind: Service
metadata:
name: my-api-service
labels:
label: my-api-service
spec:
type: NodePort
ports:
- port: 80
targetPort: 80
protocol: TCP
name: http
selector:
name: my-api-selector
这是我的nginx配置:
apiVersion: v1
kind: ConfigMap
metadata:
name: nginx-config
data:
nginx.conf: |
events {
worker_connections 1024;
}
http {
upstream api {
server 127.0.0.1:9000 fail_timeout=0;
}
server {
access_log /var/log/nginx/api.my.log;
error_log /var/log/nginx/api.my.mesozi.com-http-error.log;
listen 80;
server_name localhost;
location /static/ {
autoindex on;
alias /static/;
}
location /media/ {
alias /src/media/;
}
location = /favicon.ico {
access_log off;
log_not_found off;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:9000/;
}
}
}
您可以在我的部署文件中看到,我正在同时运行nginx和我的应用程序。除了未应用样式,一切都在Minikube中运行良好。在浏览器中查看network
所有静态文件请求都可以200
。我想念什么?
我想显示我的API的样式没有任何用处
查看静态文件部分:
location /static/ {
autoindex on;
alias /static/;
}
/static/
是静态网络文件的绝对路径吗?
再次,为什么要为此文件打开自动索引标志,应该设置为:
autoindex off;
另外,您可以尝试使用静态文件的根定义:
location /static/ {
root /var/;
autoindex off;
}
然后在/var
下具有静态文件夹/var/static
。位置部分附加到根中指定的路径。
只需在您的nginx.conf上添加以下代码
...
http {
include /etc/nginx/mime.types;
...
}
...