首页 > 解决方案 > 对 reactjs 应用程序的挂载路径所做的更改不会反映在 Web UI 中

问题描述

这是我用于为 kubernetes/openshift 部署构建映像的 dockerfile:

FROM node:8.11.4
RUN mkdir /app
WORKDIR /app
COPY package.json .
RUN npm install
COPY src src
COPY public public
EXPOSE 3000
CMD ["npm", "start"]

此应用程序的源代码克隆自:https ://github.com/nodeshift-starters/react-web-app

这是我的部署 yaml:

apiVersion: v1
kind: DeploymentConfig
metadata:
  name: 'react-app'
  labels:
    app: 'react-app'
spec:
  template:
    spec:
      initContainers:
        - name: init-react
          imagePullPolicy: IfNotPresent
          image: "docker-registry.default.svc:5000/${NAMESPACE}/react-app"
          command: ["sh", "-c"]
          args: ["cp -n -r /app/* /tmp/app; sleep 1; ls -al"]
          volumeMounts:
            - mountPath: /tmp/app
              name: react-storage-volume

      containers:
        - image: 'react-app:latest'
          name: 'react-app'
          securityContext:
            privileged: false
          ports:
            - containerPort: 3000
              name: http
              protocol: TCP
          resources:
            limits:
              memory: 500Mi
          volumeMounts:
            - name: react-storage-volume
              mountPath: /app                  

      volumes:
        - name: react-storage-volume
          persistentVolumeClaim:
            claimName: "${pv_react}-claim"

    metadata:
      labels:
        app: 'react-app'
  replicas: 1
  selector:
    app: 'react-app'
  triggers:
    - type: ConfigChange
    - type: ImageChange
      imageChangeParams:
        automatic: true
        containerNames:
          - 'react-app'
        from:
          kind: ImageStreamTag
          name: 'react-app:latest'

/app挂载到 nfs 挂载路径:/mnt/k8sMount/react-data/

观察结果是,每当对 NFS 挂载路径进行更改时src/App.js,它都会更新到 pod(我已对 pod 执行并检查了其内容),但是当浏览器中刷新 Web UI 时,不会显示更改. 另一个观察结果是,如果 pod 内部发生更改,src/App.js那么在浏览器中刷新 Web UI 时,更改就会出现。

由于我希望src/App.js对 NFS 挂载路径所做的更改反映在 Web UI 中,因此请向我建议部署是否有任何问题或是否有任何替代方法来实现此目的。提前致谢。

标签: reactjsdockernpmkubernetesopenshift

解决方案


推荐阅读