对于已经存在的具有多个依赖项的应用程序,是否可以使用一个docker映像

对于已经存在的具有多个依赖项的应用程序,是否可以使用一个docker映像,docker,dockerfile,Docker,Dockerfile,我是Docker的新手,想通过现实生活中的挑战来学习诀窍 我有一个托管在IIS上的应用程序,它依赖于SQL Express和SOLR 我想了解以下几点: 是否可以进行我的全部设置,包括启用IIS, SQL、SOLR和我的应用程序在一个容器中 如果第1点可行,我应该如何开始 抱歉,如果我的问题是基本问题。这是可行的,只是不是一个好的做法。您希望隔离软件堆栈以提高可维护性(更易于部署更新)、模块性(您可以在不同的项目中重用某个组件,甚至有多个项目重用同一映像)和安全性(堆栈组件中的软件漏洞很难到达不

我是Docker的新手,想通过现实生活中的挑战来学习诀窍

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

我想了解以下几点:

  • 是否可以进行我的全部设置,包括启用IIS, SQL、SOLR和我的应用程序在一个容器中
  • 如果第1点可行,我应该如何开始

  • 抱歉,如果我的问题是基本问题。

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

    因此,我建议使用为堆栈的每个组件创建多个映像(您甚至可以从中提取通用的、最新的映像),并从Compose文件中组装它们,而不是将所有映像放在同一个映像中,这样,只需一个命令,您就可以启动应用程序工作所需的所有组件

    也就是说,将所有堆栈放在同一个Dockerfile中是可行的,但这将是一个重要的混乱。你需要一个Dockerfile来安装所需的所有软件,这将使其体积庞大且难以维护。如果你真的准备好了,你将不得不从一个基本的操作系统映像(也许)开始,并从那里开始手动安装所有其他软件。如果您需要安装其他组件的Dockerfile,并且它们共享相同的基本映像或兼容映像,则您可以直接将内容复制粘贴到Dockerfile中,代价是上述可维护性

    另外,您肯定应该使用来保证数据的安全,尤其是如果您采用这种单一的方法,因为否则可能会丢失数据库中的数据


    TL;医生:是的,你可以,但你真的不想,因为有更好的替代品,几乎同样困难。

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

    因此,我建议使用为堆栈的每个组件创建多个映像(您甚至可以从中提取通用的、最新的映像),并从Compose文件中组装它们,而不是将所有映像放在同一个映像中,这样,只需一个命令,您就可以启动应用程序工作所需的所有组件

    也就是说,将所有堆栈放在同一个Dockerfile中是可行的,但这将是一个重要的混乱。你需要一个Dockerfile来安装所需的所有软件,这将使其体积庞大且难以维护。如果你真的准备好了,你将不得不从一个基本的操作系统映像(也许)开始,并从那里开始手动安装所有其他软件。如果您需要安装其他组件的Dockerfile,并且它们共享相同的基本映像或兼容映像,则您可以直接将内容复制粘贴到Dockerfile中,代价是上述可维护性

    另外,您肯定应该使用来保证数据的安全,尤其是如果您采用这种单一的方法,因为否则可能会丢失数据库中的数据


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

    至少,数据库几乎肯定需要放在一个单独的容器中。(您不希望每次更改代码时都删除数据库。)@DavidMaze不是真的,您可以将数据库的实际数据保存在一个持续存在的卷中,并将数据库软件保存在同一个容器中,只是。。。很遗憾这样做。至少,数据库几乎肯定需要放在一个单独的容器中。(您不希望每次更改代码时都删除数据库。)@DavidMaze不是真的,您可以将数据库的实际数据保存在一个持续存在的卷中,并将数据库软件保存在同一个容器中,只是。。。很遗憾这样做。