我一直在使用Minikube在我的本地笔记本电脑(Mac)上开发应用程序。我没有将代码和文件打包到docker镜像中,而是使用case when [Date] = max([Date]) over (Intersect([Entity],AllPrevious([Date]))) then [Date] end
和hostPath
指向Mac上的代码/文件目录,这样我就可以避免每次重建图像。
现在我想用谷歌云做同样的迭代测试。什么是“挂载”我的本地代码/文件目录并在云上远程运行pod的最佳方法?我不想将代码打包到docker镜像中,推送到dockerhub,然后从gcloud上的dockerhub中拉出来。我的dockerhub是一个免费帐户,会公开我的代码。
答案 0 :(得分:2)
你想要: 您希望将本地文件系统挂载到远程Kubernetes集群中。
<强>答案:强>
据我所知,你不能这样做。它可能在minikube
中,因为您可以使用minikube
挂载本地目录。
<强>解决方案:强> 我可以告诉你另一种方法。可能这不是你想要的。但它可以帮助你。
您使用git
吗?如果您的答案是肯定的,并且如果您将文件保存到git存储库中没有问题,则以下过程将对您有所帮助。
spec:
containers:
- image: nginx
name: nginx
volumeMounts:
- mountPath: /mypath
name: git-volume
volumes:
- name: git-volume
gitRepo:
repository: "git@somewhere:me/my-git-repository.git"
revision: "22f1d8406d464b0c0874075539c1f2e96c253775"
当您创建此Pod时,my-git-repository
将被装入Pod容器内的目录/mypath
。
基本上,你可以告诉你的Pod从特定分支中提取这个git。所以每次,你改变你的代码,推动它。然后再次创建Pod。
答案 1 :(得分:1)
复制设置的最简单方法是使用存储桶作为挂载点。
对于您的设置,只需在需要从存储桶构建时将代码拉到本地主机。我假设您有一个构建脚本来执行配置部分。
但是根据其他评论,您可以使用gcr来托管配置文件并使用Deployment Manager进行构建。
答案 2 :(得分:1)
使用Google Cloud Registry的步骤:
docker build -t <image-name>:<tag> <path-to-dockerfile>
docker tag <image-name>:<tag> us.gcr.io/<gcloud-project-id>/<image-name>:<tag>
gcloud docker -- push us.gcr.io/<gcloud-project-id>/<image-name>:<tag>
您的规范将指向容器注册表路径:
spec:
containers:
- name: hello-world
image: us.gcr.io/<gcloud-project-id>/<image-name>:<tag>
ports:
- name: http
containerPort: 8080