#reactjs #docker #npm #kubernetes #openshift
#reactjs #docker #npm #kubernetes #openshift
Вопрос:
Это мой файл dockerfile, используемый для создания образа для развертывания kubernetes / openshift:
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/
.
Наблюдение заключается в том, что всякий раз, когда вносятся изменения в src/App.js
путь монтирования NFS, он обновляется в модуле (у меня есть exec для модуля и проверил его содержимое), но когда веб-интерфейс обновляется в браузере, изменения не отображаются. Другое наблюдение заключается в том, что если изменения в src/App.js
внутри модуля, то при обновлении веб-интерфейса в браузере изменения появляются.
Поскольку я хотел бы, чтобы изменения, внесенные в src/App.js
путь монтирования NFS, отражались в веб-интерфейсе, пожалуйста, предложите мне, если что-то не так, развертывание или какую-либо альтернативу для достижения этого. Заранее спасибо.
Комментарии:
1. Kubernetes не имеет смысла как живая среда разработки. Я бы рекомендовал удалить все части тома и контейнер инициализации из этой настройки Kubernetes, чтобы вы фактически запускали код из образа Docker. Если вам нужна локальная среда разработки,
node
очень проста в установке, и я бы рекомендовал использовать это.