我应该在docker映像中还是在卷中使用应用程序代码



我正在做一个Devops项目。我想找到完美的解决方案。我在两种解决方案之间存在冲突。我应该在docker映像中使用应用程序代码还是在卷中使用?

您的代码几乎永远不应该在批量中,只考虑开发人员的设置(甚至在那时(。如果您的设置类似于频繁的仅限开发人员的Node设置,它将node_modules目录放入Docker管理的匿名卷中,则情况会更加真实:由于Docker将拒绝自行更新该目录,因此其主要影响是导致Docker忽略对package.json文件的任何更改。

更一般地说,在这种情况下,您应该将图像视为分发应用程序代码的一种方式。考虑像Kubernetes这样的集群环境:集群管理器知道如何自己拉取版本化的Docker映像,但您需要围绕许多标准机制来尝试将代码推送到卷中。您不需要同时分发Docker映像和单独分发映像中的代码。

我建议使用主机目录装载来注入配置文件和存储基于文件的日志(如果不能将容器配置为登录到stdout(。对有状态容器的数据使用主机目录或命名卷装载(主机目录更容易备份,命名卷在非Linux平台上更快(。对于应用程序代码或库,根本不要使用卷。

(考虑一下,如果您只是用卷装载覆盖所有应用程序代码,那么您还可以只使用基本node映像,而不构建自定义映像;如果您正在这样做,那么您也可以使用自动化系统(Salt Stack、Ansible、Chef、(只安装Node并完全忽略Docker。(

相关内容

最新更新