skaffold - 仅在第一次使用 Skaffold 构建后才忽略对映像中文件的更新?
问题描述
我有一个包含 Angular 项目的部署。为了测试我的 Angular 项目,我使用ng serve
了可以连接到它自己的快速更新服务器的主机。为了开发,我经常保存和编辑这些文件。因为这个镜像是在我的 Skaffold 部署中使用的,这意味着 Skaffold 会不断地重建和编译我的 Angular 项目。
在我没有积极更新 Angular 方面的时候,我希望它只构建最新的文件,然后在我skaffold dev
再次运行之前不再检查它们的更新。
目前,Angular 图像的 skaffold.yaml 看起来像这样:
- image: angular
context: ../Images/angular
custom:
dependencies:
ignore: ['../Images/angular']
这成功地运行了一次角度图像,然后不再检查它的更新,但如果我对其进行更改,停止 Skaffold,然后skaffold dev
再次运行,它不会重建图像。
我理解它为什么这样做,这是有道理的,也是意料之中的。但我想知道是否有更好的方法来处理在开发过程中快速变化的图像的图像构建,例如 Vue/Angular/React。或者,也许有一种更好的方法可以将文件定义为在更改期间 skaffold dev
被忽略,而不是在运行之间进行所有更改。
我想停止不断构建它以节省笔记本电脑电池的主要原因。
解决方案
Skaffold 支持其他触发模式,包括手动触发模式:
skaffold dev --trigger=manual
然后 Skaffold 将等待您点击enter以启动下一次开发重建。
另一种方法是使用Skaffold Control API来切换自动构建。例如,您可以使用 REST API 关闭自动构建:
curl -X PUT -d '{"enabled":false}' localhost:50052/v1/build/auto_execute
然后,您可以根据需要重新启用它。如果您希望构建但不部署图像(例如,查看构建时错误),您可以使用控制 API 切换自动部署,并且您也可以手动触发构建/部署/同步。
您可以通过运行找到控制端口skaffold dev -v info
;gRPC 端口通常为 50051,REST 端口通常为 50052:
$ skaffold dev -v info
INFO[0000] starting gRPC server on port 50051
INFO[0000] starting gRPC HTTP server on port 50052
INFO[0000] Skaffold &{Version:v1.23.0 ConfigVersion:skaffold/v2beta15 GitVersion: GitCommit:e8f3c652112c338e75e03497bc8ab09b9081142d BuildDate:2021-04-28T00:55:12Z GoVersion:go1.14.14 Compiler:gc Platform:darwin/amd64}
...
或者您可以显式配置端口:
skaffold dev --rpc-http-port=50099
对于旧版本的 Skaffold,您可能需要使用--enable-rpc
.
推荐阅读
- css - 如何动态样式化组件的宿主
- c# - 发送短信时如何获取信息?
- python - 为什么 TensorFlow 不支持具有 int64 密集张量的 Boosted Decision Trees?
- php - 参数为空时如何获取所有值
- tfs - TFS 2015 找不到具有以下功能的代理:msbuild、java、sonar qube
- javascript - 为什么我在 React useState 钩子中改变状态很重要?
- django - 使用带有 Wagtail 的 Django 过滤器时 int() 的无效文字(以 10 为底):'RW'
- java - 如何使用超类的超方法
- ios - 具有动态行高的 UITableView 显示自动布局约束错误
- ios - SceneKit 在多个透明平面上延迟阴影