我是Docker的新手,想要了解真实挑战的绳索。
我有一个托管在IIS上的应用程序,它依赖于SQL Express和SOLR。
我想了解以下内容:
对不起,如果我的问题是基础知识。
这是可行的,不是一个好的做法。您希望隔离软件堆栈以提高可维护性(更易于部署更新),模块化(您可以在不同项目中重用某个组件,甚至让多个项目重用相同的映像)和安全性(组件中的软件漏洞)堆栈几乎无法达到不同的组件)。
因此,我建议使用Docker Compose为堆栈的每个组件提供多个图像(您甚至可以从Docker Hub中提取通用的,最新的图像),然后从Compose中将它们组装起来,而不是将所有图像放在同一个图像中。文件,因此只需一个命令,您就可以启动应用程序工作所需的所有组件。
话虽如此,将所有堆栈放在同一个Dockerfile中是可行的,但这将是一个重要的混乱。你需要一个Dockerfile来安装所需的所有软件,这将使它变得笨重而难以保持。如果你真的很喜欢这个,你必须从基本的操作系统映像(可能是Windows Server Core IIS)开始,然后从那里开始手动安装所有其他软件。如果您需要安装其他组件的Dockerfiles并且它们共享相同的基本映像或兼容的基本映像,您可以直接将内容复制粘贴到Dockerfile中,但代价是所述可维护性。
此外,你绝对应该使用volumes来保证数据安全,特别是如果采用这种单片方法,因为否则会丢失数据库中的数据。
TL; DR:是的,你可以,但你真的不想,因为有更好的替代方案几乎同样难。