игнорировать папку / файлы из skaffold watch

#typescript #kubernetes #kubernetes-helm #skaffold

#typescript #kubernetes #kubernetes-рулевой #skaffold

Вопрос:

Я использую skaffold для запуска моего приложения typescript с помощью helm в Kubernetes. Ниже приведена моя конфигурация сборки skaffold.

 apiVersion: skaffold/v2beta8
kind: Config
build:
  local: 
    push: false
  tagPolicy:
    gitCommit:
      variant: CommitSha
      prefix: commit-
  artifacts: 
  - image: my-app
    sync:
      infer: 
        - '**/**/*.ts'
        - '**/**/*.json' 
  

В соответствии с этим, всякий раз, когда я запускаю приложение, приложение синхронизирует мои ts и JSON-файл при обновлении, и, кроме этих файлов, оно перестраивает приложение. У меня есть папка «build» в моей корневой структуре. который я смонтировал в модуле Kubernetes, поэтому при каждой сборке приложения я получаю последний код сборки на своем локальном компьютере, и это поможет отладить приложение. Но из-за этого приложение постоянно перестраивается, поскольку skaffold обнаружил изменения в папке сборки.
Итак, как игнорировать папку / файл для skaffold watch? Я пытался использовать buildpacks.dependencies, но он не будет работать (выдает ошибку для определения изображения builder). Кто-нибудь может мне помочь, пожалуйста?

Спасибо.

Ответ №1:

В вашем примере вы используете docker конструктор Skaffold. Файловый наблюдатель Skaffold учитывает значения в .dockerignore файле.

Комментарии:

1. Спасибо @Brian de Alwis!!

Ответ №2:

К лучшему или к худшему, я использую опцию ручной синхронизации, чтобы Skaffold не выполнял сборку Docker при изменении локального файла:

     image: some-image
    docker:
      dockerfile: Dockerfile
    sync:
      manual:
        - src: 'some-file'
          dest: /some-directory-on-the-container
  

При some-file изменениях на хосте (по какой-либо причине) Skaffold скопирует этот файл в работающий контейнер и обойдет перестроение. Меня не волнует, куда он копируется в запущенном контейнере.

Не то, для чего предназначен механизм, но он решает проблему. На самом деле мне нужна some-file первая сборка Docker, поэтому я не смог ее вставить .dockerignore .

https://skaffold.dev/docs/pipeline-stages/filesync/#manual-sync-mode