首页 > 解决方案 > 有没有办法在 Kubernetes 部署/pod 定义中给出类路径?

问题描述

我有一个应用程序战争,它读取一个 API 实现 jar 文件以在内存中加载一些数据。我目前正在做的是在生成我的应用程序图像时使用 docker 文件将那个 jar 复制到我的“application-war/lib”目录中。

这样做的缺点是每当需要更换罐子时;我需要重新创建我的应用程序战争 docker 映像。

有没有办法可以外部化这个 jar 文件位置,我只需要重新启动正在运行的 pod,而不是每次都创建一个新图像。

我的意思是,如果我可以提供一个额外的 CLASSPATH,我的 pod 容器可以在启动时读取它。

谢谢

标签: dockerkubernetesdockerfilekubernetes-podkubernetes-deployment

解决方案


提供更多上下文。@Hazim所说的一切都是正确的,我完全同意他关于您以正确的方式进行当前构建的观点,因为它允许您查看图像历史记录并在需要时快速切换。

至于在图像中使用外部文件。您需要设置一个PV 持久卷, PVC 持久卷声明将使用该卷。在Configure a Pod to Use a PersistentVolume for Storage中提供了带有示例的非常详细的描述。它展示了如何在你的节点上创建一个文件夹,在其中放置一个文件,稍后将加载到pod. 您不会将该文件加载到 apod中,而是使用您的路径Dockerfile来加载.jar文件。

如果您的.jar文件由key=value条目组成,您也可以使用ConfigMap而不是 PV。这在 Redis 应用程序中得到了很好的解释,您可以在此处看到DOCKER/KUBERNETES - CONFIGURE A POD TO USE A CONFIGMAP

我希望这能提供所有需要的信息。


推荐阅读