Django 的 ./manage.py 总是导致 skaffold 重建:有没有办法防止这种情况发生?

Django's ./manage.py always causes a skaffold rebuild: is there a way to prevent this?

我使用 minikubeskaffold 在本地 k8s 集群中开发。将 Django 和 DRF 用于 API.

我正在处理许多 models.py,但开始变得烦人的一件事是任何时候我 运行 一个 ./manage.py 命令,例如 (showmigrations, makemigrations,等等)它会触发 API 节点的 skaffold 重建。不到 10 秒,但越少越烦人none。

我应该 exclude/include 具体从我的 skaffold.yaml 中做什么来防止这种情况?

apiVersion: skaffold/v2beta12
kind: Config
build:
  artifacts:
  - image: postgres
    context: postgres
    sync:
      manual:
      - src: "**/*.sql"
        dest: .
    docker:
      dockerfile: Dockerfile.dev
  - image: api
    context: api
    sync:
      manual:
      - src: "**/*.py"
        dest: .
    docker:
      dockerfile: Dockerfile.dev
  local:
    push: false
deploy:
  kubectl:
    manifests:
      - k8s/ingress/development.yaml 
      - k8s/postgres/development.yaml
      - k8s/api/development.yaml
    defaultNamespace: development

看来 ./manage.py 必须在本地记录一些状态,从而触发重建。您需要将这些状态文件添加到您的 .dockerignore.

Skaffold 通常以 warning 级别记录,这会抑制触发同步或重建的详细信息。 运行 使用 -v info 搭建支架,您会看到更多详细信息:

$ skaffold dev -v info
...
[node] Example app listening on port 3000!
INFO[0336] files added: [backend/src/foo]               
INFO[0336] Changed file src/foo does not match any sync pattern. Skipping sync 
Generating tags...
 - node-example -> node-example:v1.20.0-8-gc9335b0ad-dirty
INFO[0336] Tags generated in 80.293621ms                
Checking cache...
 - node-example: Not found. Building
INFO[0336] Cache check completed in 1.844615ms          
Found [minikube] context, using local docker daemon.
Building [node-example]...