Laradock:每个项目的单独环境还是多个项目的单一环境?
Laradock: separate environment for each project or single environment for multiple projects?
Laradock 提供两种选择:(1) 每个项目单独的 Docker 环境和 (2) 所有项目的单一 Docker 环境。
这两种设置有什么区别?如果我有两个项目要部署到一个 Droplet (Digitalocean) 上,每个项目都使用单独的域名,我会推荐哪种设置?
假设您有 2 个项目:项目 A 和项目 B。
在选项 (1) 中,您为项目 A 创建一个 docker 环境,为项目 B 创建一个不同的 docker 环境。这意味着项目 A 的 MySQL 数据库将与项目 B 的 MySQL 数据库位于不同的容器中。我个人更喜欢这种方法,因为:
它保证每个项目都是独立的并且可以有不同的依赖关系。如果您需要更新项目 A 的 MySQL 版本,您可以轻松完成,而无需更新项目 B。
两个项目之间不可能发生不需要的交互。项目 A 看不到项目 B 数据,没有可能导致项目之间错误交互的错误配置。
另一方面,如果两个项目使用单独的 docker 环境,运行 同时 这两个项目并非易事:您需要修改许多配置使它们使用单独的端口而不会产生冲突。
选项(2)基本相反。您为每个服务只创建一个容器,并且两个项目使用相同的容器。您将拥有一个包含 2 个不同数据库的 MySQL 容器,一个供项目 A 使用,一个供项目 B 使用。
这种方法的主要优点是能够以最小的努力同时运行 项目。
另一方面,如果项目需要相同依赖项的不同版本,事情就会变得复杂并且错误配置会导致意外交互(例如,您可能在一个项目中错误地设置了 Redis 数据库,这两个项目将共享同一个存储桶,可能会出现重叠以及很难检测和调试的问题)
根据经验,如果两个项目彼此强烈依赖并且将一起开发,我会使用选项 (2),而在所有其他情况下,我会使用选项 (1)。
Laradock 提供两种选择:(1) 每个项目单独的 Docker 环境和 (2) 所有项目的单一 Docker 环境。
这两种设置有什么区别?如果我有两个项目要部署到一个 Droplet (Digitalocean) 上,每个项目都使用单独的域名,我会推荐哪种设置?
假设您有 2 个项目:项目 A 和项目 B。
在选项 (1) 中,您为项目 A 创建一个 docker 环境,为项目 B 创建一个不同的 docker 环境。这意味着项目 A 的 MySQL 数据库将与项目 B 的 MySQL 数据库位于不同的容器中。我个人更喜欢这种方法,因为:
它保证每个项目都是独立的并且可以有不同的依赖关系。如果您需要更新项目 A 的 MySQL 版本,您可以轻松完成,而无需更新项目 B。
两个项目之间不可能发生不需要的交互。项目 A 看不到项目 B 数据,没有可能导致项目之间错误交互的错误配置。
另一方面,如果两个项目使用单独的 docker 环境,运行 同时 这两个项目并非易事:您需要修改许多配置使它们使用单独的端口而不会产生冲突。
选项(2)基本相反。您为每个服务只创建一个容器,并且两个项目使用相同的容器。您将拥有一个包含 2 个不同数据库的 MySQL 容器,一个供项目 A 使用,一个供项目 B 使用。 这种方法的主要优点是能够以最小的努力同时运行 项目。
另一方面,如果项目需要相同依赖项的不同版本,事情就会变得复杂并且错误配置会导致意外交互(例如,您可能在一个项目中错误地设置了 Redis 数据库,这两个项目将共享同一个存储桶,可能会出现重叠以及很难检测和调试的问题)
根据经验,如果两个项目彼此强烈依赖并且将一起开发,我会使用选项 (2),而在所有其他情况下,我会使用选项 (1)。