实时将更改应用于 pod 代码源 - npm

applying changes to pod code source realtime - npm

我的 pod 上安装了 reactjs 应用程序 运行ning,并且我已将源代码从主机安装到 pod。它工作正常但是当我在主机中更改我的代码时,pod 源代码也会更改但是当我 运行 站点时它没有影响应用程序。这是我的清单,我做错了什么?

---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: webapp
spec:
  replicas: 1
  minReadySeconds: 15
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 1
  template:
    metadata:
      labels:
        app: webapp
        tier: frontend
        phase: development
    spec:
      containers:
      - name: webapp
        image: xxxxxx            
        command:
        - npm
        args:
        - run
        - dev
        env:
        - name: environment
          value:  dev
        - name: AUTHOR
          value: webapp
        ports:
        - containerPort: 3000
        volumeMounts:
        - mountPath: /code
          name: code
      imagePullSecrets:
        - name: regcred
      volumes:
        - name: code
          hostPath:
            path: /hosthome/xxxx/development/react-app/src

而且我知道 npm 没有监视我的更改,我如何在 pods 中解决它?

基本上,您每次更改代码时都需要重新加载您的应用程序,而当您更改 /code 目录下的代码时,您的 pods 不会重新加载或重新启动。由于您正在使用部署,因此您将不得不重新创建您的 pod,您可以:

kubectl delete <pod-where-your-app-is-running>

export PATCH='{"spec":{"template":{"metadata":{"annotations":{"timestamp":"'$(date)'"}}}}}'
kubectl patch deployment webapp -p "$PATCH"

您的 pods 应该会在之后重新启动。

Rico 提到的是正确的,您需要对每个更改进行修补或重建,但是您可以通过 运行ning minikube without vm-driver 来避免这种情况,这里是 运行 minikube 的命令没有 vm-driver 仅适用于 Linux,通过这样做,您可以将主机路径挂载到 pod。希望这会有所帮助

sudo minikube start --bootstrapper=localkube --vm-driver=none --apiserver-ips 127.0.0.1 --apiserver-name localhost -v=1