具有基础镜像混合的Docker镜像

4
我想构建一个使用NodeJs和Java Runtime的Docker镜像。
可以找到分别用于每个基础环境的Docker文件。
如何使用两个“基础”创建新的镜像?
在这种情况下,我将在同一镜像中运行Angular应用程序和Spring应用程序。
有什么关于如何满足这些要求的提示吗?这样做有意义吗?

3
你不能运行三个容器吗?一个是node,一个是java,还有一个是生成的angular应用程序?当你开始把服务挤在一个容器里时,通常意味着架构出了问题。请问一下自己,是否可以通过运行多个容器实例来扩展你的应用程序。 - Grimmy
非常好的观点,事实上我正在将它们分开... - Filipe Miranda
1个回答

3
如果这在你的情况下有意义,很难从外部判断。通常情况下,一张图片应该只做一件事情,特定地运行一个应用程序。看起来你正在一个容器中混合两个东西。如果你真的想这么做,我会选择“更难安装”的镜像,并将其选择为基础镜像(似乎是Spring镜像)。然后我会添加node.js的软件包,这应该只需要几行代码。由于大多数Dockerfiles都是公开的,你可以查找这些镜像并为两个应用程序构建自己的镜像。
但总的来说,这听起来像是你真正需要两个镜像,一个用于Angular,一个用于Spring。然后你可以通过docker-compose组合这些镜像,或者手动链接它们(如果需要的话)。

听起来不错!我同意你的看法,会有不同的镜像。当我使用docker-compose时,它是创建新镜像还是仅用于编排容器? - Filipe Miranda
@FilipeMiranda 你可以使用服务中的 build 属性来扩展图像。另一种选择是仅使用 image 引用预构建的图像(当构建系统创建图像时通常使用此选项)。 - Grimmy
docker-compose编排和链接您的镜像容器。如果您将它们链接起来并且想要挂载卷,它会自动创建一个容器网络。值得一试,我在几乎所有项目中都使用它。build覆盖了Dockerfile的CMD部分,就是这样。使用image可以在组合中定义基础镜像,这可能是您的两个镜像之一。互联网上有很多这方面的例子。 - n2o

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接