#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