Я портирую приложение узла / реагирования / веб-пакета на k8s и пытаюсь настроить среду разработки, которая использует функцию горячей перезагрузки веб-пакета.Я получаю сообщение об ошибке при запуске этого с общим томом на minikube
:
ERROR in ./~/css-loader!./~/sass-loader/lib/loader.js?{"data":"$primary: #f9427f;$secondary: #171735;$navbar-back-rotation: 0;$navbar-link-rotation: 0;$login-background: url('/images/login-background.jpg');$secondary-background: url('/images/secondary-bg.jpg');"}!./src/sass/style.sass
Module build failed: Error: Node Sass does not yet support your current environment: Linux 64-bit with Unsupported runtime (67)
For more information on which environments are supported please see:
Запуск кода в контейнере сам (в основном) работает - он запускается без ошибок и обслуживает страницучерез docker run -it --rm --name=frontend --publish=3000:3000 <container hash>
#Dockerfile
FROM node:latest
RUN mkdir /code
ADD . /code/
WORKDIR /code/
RUN yarn cache clean && yarn install --non-interactive && npm rebuild node-sass
CMD npm run dev-docker
, где dev-docker
в package.json
равно NODE_ENV=development npm run -- webpack --progress --hot --watch
В дальнейшем, комментирование клавиши volumeMounts
устраняет ошибку.
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: dev
name: web
labels:
app: web
spec:
replicas: 1
selector:
matchLabels:
app: frontend-container
template:
metadata:
labels:
app: frontend-container
spec:
volumes:
- name: frontend-repo
hostPath:
path: /Users/me/Projects/code/frontend
containers:
- name: web-container
image: localhost:5000/react:dev
ports:
- name: http
containerPort: 3000
protocol: TCP
volumeMounts:
- name: frontend-repo
mountPath: /code
env:
... # redacted for simplicity, assume works
Основываясь на том, что я нашел в другом месте, я считаю, что os-native связывание, используемое node-sass
, создает помехи между хостом и контейнером, когда вводится общий том.То есть процесс построения образа создает привязки, которые будут работать для контейнера, но они перезаписываются при монтировании общего тома.
Правильно ли это понимание?Как лучше всего структурировать вещи так, чтобы разработчик мог работать над своим локальным репо и видеть, что эти изменения автоматически отражаются в экземпляре кластера, без перекомпоновки образов?