是否可以为具有多个依赖项的现有应用程序提供一个docker镜像

问题描述 投票:0回答:1

我是Docker的新手,想要了解真实挑战的绳索。

我有一个托管在IIS上的应用程序,它依赖于SQL Express和SOLR。

我想了解以下内容:

  1. 是否可以完成整个设置,包括在一个容器中启用IIS,SQL,SOLR和我的应用程序?
  2. 如果第1点可行,我该如何开始呢?

对不起,如果我的问题是基础知识。

docker dockerfile
1个回答
1
投票

这是可行的,不是一个好的做法。您希望隔离软件堆栈以提高可维护性(更易于部署更新),模块化(您可以在不同项目中重用某个组件,甚至让多个项目重用相同的映像)和安全性(组件中的软件漏洞)堆栈几乎无法达到不同的组件)。

因此,我建议使用Docker Compose为堆栈的每个组件提供多个图像(您甚至可以从Docker Hub中提取通用的,最新的图像),然后从Compose中将它们组装起来,而不是将所有图像放在同一个图像中。文件,因此只需一个命令,您就可以启动应用程序工作所需的所有组件。

话虽如此,将所有堆栈放在同一个Dockerfile中是可行的,但这将是一个重要的混乱。你需要一个Dockerfile来安装所需的所有软件,这将使它变得笨重而难以保持。如果你真的很喜欢这个,你必须从基本的操作系统映像(可能是Windows Server Core IIS)开始,然后从那里开始手动安装所有其他软件。如果您需要安装其他组件的Dockerfiles并且它们共享相同的基本映像或兼容的基本映像,您可以直接将内容复制粘贴到Dockerfile中,但代价是所述可维护性。

此外,你绝对应该使用volumes来保证数据安全,特别是如果采用这种单片方法,因为否则会丢失数据库中的数据。

TL; DR:是的,你可以,但你真的不想,因为有更好的替代方案几乎同样难。

© www.soinside.com 2019 - 2024. All rights reserved.