为了账号安全,请及时绑定邮箱和手机立即绑定

skaffold 不会在 minikube 中重新加载 golang 代码

skaffold 不会在 minikube 中重新加载 golang 代码

Go
翻阅古今 2022-06-13 16:38:39
我一直在尝试使用本地 minikube 安装的 skaffold。能够在尽可能接近生产的东西上开发您的项目真是太好了。如果我使用skaffold github repo 上提供的入门示例,一切正常,我的 IDE(intellij idea)在断点处停止,当我修改代码时,更改会立即反映。现在,在我的个人项目中,它比简单的 main.go 文件更复杂一些,但事情并没有按预期工作。IDE 在断点处停止,但是即使我在控制台中看到 skaffold 检测到对该特定文件所做的更改,但热代码重新加载也没有发生,但不幸的是,这些更改没有反映/应用。一个docker文件用于构建镜像,docker文件如下FROM golang:1.14 AS builderWORKDIR /appCOPY go.mod go.sum ./RUN go mod downloadCOPY . .RUN CGO_ENABLED=0 go build -o /app.o ./cmd/shortener/shortener.goFROM alpine:3.12COPY --from=builder /app.o ./COPY --from=builder /app ./EXPOSE 3000ENV GOTRACEBACK=allCMD ["./app.o"]在 kubernetes 方面,我正在创建一个部署和一个服务,如下所示:apiVersion: apps/v1kind: Deploymentmetadata:  name: url-shortener-deploymentspec:  selector:    matchLabels:      app: url-shortener  template:    metadata:      labels:        app: url-shortener    spec:      containers:        - name: url-shortener          image: url_shortener          ports:            - containerPort: 3000---apiVersion: v1kind: Servicemetadata:  name: url-shortener-servicespec:  selector:    app: url-shortener  ports:    - port: 3000      nodePort: 30000  type: NodePort至于 skaffold,这里是 skaffold.yaml 文件:apiVersion: skaffold/v2beta5kind: Configmetadata:  name: url-shortenerbuild:  artifacts:    - image: url_shortener      context: shortener      docker:        dockerfile: build/docker/Dockerfile.dev        noCache: falsedeploy:  kubectl:    manifests:      - stack/mongo/mongo.yaml      - shortener/deployments/kubernetes/shortener.yaml我已启用详细日志记录,每当我保存 (CTRL+S) 源代码文件时,我都会在输出中注意到这一点。time="2020-07-05T22:51:08+02:00" level=debug msg="Found dependencies for dockerfile: [{go.mod /app true} {go.sum /app true} {. /app true}]"time="2020-07-05T22:51:08+02:00" level=info msg="files modified: [shortener/internal/handler/rest/rest.go]"我假设这意味着已检测到更改。断点在 IDE 中正常工作,但 kubernetes 中的代码交换似乎没有发生
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

调试功能故意禁用 Skaffold 的文件监视,它会在文件更改时重建和重新部署容器。重新部署会导致现有容器终止,从而中断任何正在进行的调试会话。由于您不小心保存了对评论的更改,因此您精心构建的调试会话被拆除,真是令人迷失方向和恶化!😫

但我们正在研究如何在 Cloud Code中更好地支持这种更具迭代性的调试。

如果您直接使用 Skaffold,我们最近添加了通过(在 v1.12 中提供)重新启用文件监视的功能skaffold debug --auto-build --auto-deploy


查看完整回答
反对 回复 2022-06-13
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信