首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >skaffold不重新加载minikube中的golang代码

skaffold不重新加载minikube中的golang代码
EN

Stack Overflow用户
提问于 2020-07-05 21:01:01
回答 1查看 821关注 0票数 4

我一直在试验一种本地的小型机器人装置。能够在尽可能接近生产的地方开发您的项目是一件很好的事情。

如果我使用在skaffold上提供的入门示例,一切都很好,我的IDE (intellij )停止在断点上,当我修改我的代码时,更改会立即反映出来。

现在,在我的个人项目上,它比一个简单的main.go文件要复杂一些,事情并不像预期的那样工作。IDE在断点上停止,但是热代码重新加载并没有发生,尽管我在控制台中看到skaffold检测到了对特定文件所做的更改,但不幸的是,这些更改没有得到反映/应用。

停靠文件用于生成图像,停靠文件如下所示

代码语言:javascript
复制
FROM golang:1.14 AS builder

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download
COPY . .

RUN CGO_ENABLED=0 go build -o /app.o ./cmd/shortener/shortener.go

FROM alpine:3.12
COPY --from=builder /app.o ./
COPY --from=builder /app ./
EXPOSE 3000
ENV GOTRACEBACK=all
CMD ["./app.o"]

在kubernetes方面,我创建了一个部署和一个服务,如下所示:

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: url-shortener-deployment
spec:
  selector:
    matchLabels:
      app: url-shortener
  template:
    metadata:
      labels:
        app: url-shortener
    spec:
      containers:
        - name: url-shortener
          image: url_shortener
          ports:
            - containerPort: 3000
---
apiVersion: v1
kind: Service
metadata:
  name: url-shortener-service
spec:
  selector:
    app: url-shortener
  ports:
    - port: 3000
      nodePort: 30000
  type: NodePort

至于skaffold,下面是skaffold.yaml文件:

代码语言:javascript
复制
apiVersion: skaffold/v2beta5
kind: Config
metadata:
  name: url-shortener
build:
  artifacts:
    - image: url_shortener
      context: shortener
      docker:
        dockerfile: build/docker/Dockerfile.dev
        noCache: false
deploy:
  kubectl:
    manifests:
      - stack/mongo/mongo.yaml
      - shortener/deployments/kubernetes/shortener.yaml

我已经启用了详细的日志记录,每当我保存(CTRL+S)源代码文件时,我就会在输出中注意到这一点。

代码语言:javascript
复制
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中的代码交换似乎没有发生

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-08 02:33:16

调试功能故意禁用Skaffold的文件监视功能,后者在文件更改时重新构建和重新部署容器。重新部署会导致现有容器终止,从而删除任何正在进行的调试会话。让您精心构建的调试会话被拆除确实令人困惑和恼怒,因为您意外地保存了对评论的更改!

但是,我们正在研究如何更好地支持云代码中更多的迭代调试。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62746288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档