Skaffold Kubernetes не отображает изменения React - PullRequest
2 голосов
/ 28 марта 2019

Проблема:

При запуске skaffold и обновлении просматриваемых файлов я вижу, что происходит обновление синхронизации файлов, и nodemon перезапускает сервер, но при обновлении страницы изменения не отображаются.Только после полной остановки скаффолда и перезапуска я вижу изменения.

Syncing 1 files for test/dev-client:e9c0a112af09abedcb441j4asdfasfd1cf80f2a9bc80342fd4123f01f32e234cfc18
Watching for changes every 1s...
[client-deployment-656asdf881-m643v client] [nodemon] restarting due to changes...
[client-deployment-656asdf881-m643v client] [nodemon] starting `node bin/server.js`

Настройка:

У меня есть простое приложение для микросервисов.Он имеет серверную часть (flask / python) и клиентскую (реагирует) с экспресс-обработкой сервера dev.У меня есть nodemon с устаревшим сторожевым флагом как true (для опроса Chokidar).В процессе разработки я использую Kubernetes через Docker для Mac.

Код:

Я рад опубликовать свой код для помощи.Просто дайте мне знать, какие из них наиболее необходимы.

Вот несколько стартеров:

Skaffold.yaml:

apiVersion: skaffold/v1beta7
kind: Config
build:
  local:
    push: false
  artifacts:
    - image: test/dev-client
      docker:
        dockerfile: Dockerfile.dev
      context: ./client
      sync:
        '**/*.css': .
        '**/*.scss': .
        '**/*.js': .
    - image: test/dev-server
      docker:
        dockerfile: Dockerfile.dev
      context: ./server
      sync:
        '**/*.py': .
deploy:
  kubectl:
    manifests:
      - k8s-test/client-ip-service.yaml
      - k8s-test/client-deployment.yaml
      - k8s-test/ingress-service.yaml
      - k8s-test/server-cluster-ip-service.yaml
      - k8s-test/server-deployment.yaml

Соответствующая часть из Package.json:

 "start": "nodemon -L bin/server.js",

Dockerfile.dev (на стороне клиента):

# base image
FROM node:10.8.0-alpine

# setting the working directory 
# may have to run this depending on environment
# RUN mkdir -p /usr/src/app 
WORKDIR /usr/src/app

# add '/usr/src/app/node_modules/.bin' to $PATH
ENV PATH /usr/src/app/node_modules/.bin:$PATH

# install and cache app depencies
COPY package.json /usr/src/app/package.json
RUN npm install

# copy over everything else
COPY . .

# start the app.
CMD ["npm", "run", "start"]

1 Ответ

3 голосов
/ 31 марта 2019

Оказывается, я использовал неправильный шаблон для синхронизации файлов. ** / *. js не синхронизирует каталог должным образом.

После изменения

sync:
        '**/*.css': .
        '**/*.scss': .
        '**/*.js': .

до

sync:
        '***/*.css': .
        '***/*.scss': .
        '***/*.js': .

Он сразу начал работать.


Обновление: В последних версиях скаффолда этот шаблон больше не работает, так как скаффолд по умолчанию отменен. Теперь вы можете использовать шаблоны ** / * и получать те же результаты.

...