为一个现有的具有多个依赖关系的应用程序使用一个docker镜像是否可行

时间:2019-05-01 18:04:39

标签: docker dockerfile

我是Docker的新手,想学习现实生活中的难题。

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

我想了解以下内容:

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

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

1 个答案:

答案 0 :(得分:1)

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

因此,我建议不要使用Docker Compose为堆栈的每个组成部分提供多个图像(您甚至可以从{{提取通用的最新图像) 3}}),然后从Compose文件中进行组装,因此只需一个命令,您就可以启动应用程序正常工作所需的所有组件。

话虽这么说,将所有堆栈放到同一个Dockerfile中是可行的,但这将是一个重要的麻烦。您将需要一个Dockerfile来安装所需的所有软件,这将使其体积庞大且难以维护。如果确实需要这样做,则必须从基本的操作系统映像(可能是Docker Hub)开始,然后从那里开始手动安装所有其他软件。如果需要为其他组件安装Dockerfile,并且它们共享相同的基本映像或兼容的基本映像,则可以直接将内容复制粘贴到Dockerfile中,而牺牲了可维护性。

此外,您绝对应该使用Windows Server Core IIS来确保数据安全,特别是如果采用这种整体方法,因为否则可能会丢失数据库中的数据。

TL; DR:是的,您可以,但是您真的不想要,因为有很多更好的替代方案却几乎一样困难。