我的项目有一个应用程序服务器和一个C ++库。该库不依赖于应用程序服务器。供应商为应用程序服务器提供了Docker镜像。我需要部署一个需要可以从每个应用程序服务器节点/ pod访问的C ++库。
我编写了一个基于供应商图像的Dockerfile,编译并将库复制到位。但是,每次有新版本的应用程序服务器时,我都需要从头开始重新构建我的C ++库。鉴于缺乏依赖性,这些似乎不是最佳的。
天真地,我期待的是能够将C ++库构建为“空”图像并在每个pod中安装(如文件系统)。这样服务器和库是分开维护的。
建立在供应商Dockerfile上的“正确”方法来构建这个吗?还是有更像我的“理想化”愿景的解决方案?
我希望答案是显而易见的,我只需要正确的术语来搜索...非常赞赏的指针。
使用Kubernetes,您至少有两个选项可以分别从容器映像管理库:
Init container
来download它并放入应用服务器的pod文件系统。正如您所说,您可以将C ++库构建为“空”图像。对于所有部署,您可以将其用作基本映像。这样您就可以避免为每个部署构建库。
例如:使用C ++库构建映像。让我们称之为lib-img。当供应商构建映像时,供应商可以使用lib-img作为基本映像,您还可以向lib-img添加供应商所需的其他依赖项。
您还可以使用init容器来拉动pod上的库。