Docker 创建容器的最佳方法
我正在使用nodejs、mysql开发一个应用程序,它具有以下依赖项Docker 创建容器的最佳方法,docker,containers,Docker,Containers,我正在使用nodejs、mysql开发一个应用程序,它具有以下依赖项 Nginx(用于反向代理数据库和nodejs服务器) (依赖操作系统是ubuntu) (依赖操作系统是ubuntu) 我想知道如果我想使用docker容器来打包我的应用程序,最好的方法是什么 我应该创建一个Nginx容器、一个nodejs容器和一个MySQL,并让它们相互通信吗?我知道这是一种更好的方法,因为它是可伸缩的,但在这种情况下,我应该如何以及在哪里安装ghostscript和pdftk?(nodejs应用程序对p
- Nginx(用于反向代理数据库和nodejs服务器)
- (依赖操作系统是ubuntu)
- (依赖操作系统是ubuntu)
我是否应该创建一个ubuntu docker容器并在其中安装所有内容(即Nginx、pdftk、Ghostscript、mysql)?您应该为每个应用程序创建单独的容器,因为这样可以实现:
- 独立部署
- 独立缩放
- 自主开发
- 隔离和安全
我建议您在生产环境中不要将数据库部署在Docker容器中,因为数据库存储状态,而且不可靠,这会增加支持的复杂性。将应用程序拆分为单独的容器需要定义良好的API来支持网络上的调用(通常是HTTP或TCP堆栈上的其他应用程序协议) 由于ghostscripts和pdftk都是使用CLI调用的命令行工具,您无法从另一个容器中即时调用它们,因此需要为此开发一些面向外部的API 在设置容器的边界时,请考虑域。容器将成为您要部署和扩展的最小单元。该单元应该是自包含的,并且具有定义良好的单一用途 从您的描述中不清楚nginx到底扮演什么角色,但假设它是某种面向客户机的web服务器或代理,3个容器在您的案例中是有意义的
- NodeJs+PDFTK+Ghostscripts(应用程序)
- Nginx(web服务器/代理)
- MySQL(数据库)
NodeJS应用程序内部有其所有的应用程序依赖项,但与Nginx和MySQL的耦合更为松散,可以通过网络与之通信。使用docker部署数据库并不一定不好,而且只要状态保持在外部(例如在卷上),就肯定不可靠。对于大规模部署ts在性能非常重要的地方,将数据库保留在虚拟机或裸机上可能仍然有意义,因为这样可以进行更深入的内核调优等。感谢您的回复。我基本上需要Nginx来反向代理数据库和nodejs服务器。如果我使用nodejs容器,它是否允许我在其中安装PDFTK+Ghostscripts?我想PDFTK和Ghostscripts只能安装在ubuntu容器上。