使用Kubernetes在Nginx中提供资产文件

时间:2019-10-29 16:58:59

标签: javascript node.js nginx kubernetes

我正在尝试使用节点应用程序和Nginx代理服务器将Pod部署到kubernetes,这也应该为我的资产文件提供服务。

为此,我在一个吊舱内使用了两个容器。下面的代码可正确运行该应用程序,但nginx无法提供资产文件。

下面是我的front-end-deployment.yaml文件,该文件负责为我创建部署。我想知道为什么这种配置的nginx不能提供静态文件?

apiVersion: v1
kind: ConfigMap
metadata:
  name: mc3-nginx-conf
data:
  nginx.conf: |
    user nginx;
    worker_processes  3;
    error_log  /var/log/nginx/error.log;
    events {
      worker_connections  10240;
    }
    http {
      log_format  main
              'remote_addr:$remote_addr\t'
              'time_local:$time_local\t'
              'method:$request_method\t'
              'uri:$request_uri\t'
              'host:$host\t'
              'status:$status\t'
              'bytes_sent:$body_bytes_sent\t'
              'referer:$http_referer\t'
              'useragent:$http_user_agent\t'
              'forwardedfor:$http_x_forwarded_for\t'
              'request_time:$request_time';
      access_log    /var/log/nginx/access.log main;
      upstream webapp {
        server 127.0.0.1:3000;
      }
      server {
          listen       80;
          root /var/www/html;
          location / {
              proxy_pass         http://webapp;
              proxy_redirect     off;
          }
      }
    }
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontend
spec:
  replicas: 3
  selector:
    matchLabels:
      component: web
  template:
    metadata:
      labels:
        component: web
    spec:
      volumes:
        - name: nginx-proxy-config
          configMap:
            name: mc3-nginx-conf
        - name: shared-data
          emptyDir: {}

      containers:
        - name: nginx
          image: nginx
          ports:
            - containerPort: 80
          volumeMounts:
            - name: nginx-proxy-config
              mountPath: /etc/nginx/nginx.conf
              subPath: nginx.conf
            - name: shared-data
              mountPath: /var/www/html

        - name: frontend
          image: sepehraliakbari/rtlnl-frontend:latest
          volumeMounts:
            - name: shared-data
              mountPath: /var/www/html
          lifecycle:
            postStart:
              exec:
                command: ['/bin/sh', '-c', 'cp -r /app/build/client/. /var/www/html']
          ports:
            - containerPort: 3000

0 个答案:

没有答案