docker 组合的最佳部署策略(LAMP 堆栈)
Best deployment strategy with docker compose (LAMP stack)
我决定开始在我的所有项目中使用 docker,并且我对部署方面的最佳实践很感兴趣。
如果我有一个本地 docker 环境,即 运行 一个 php-apache、mysql 和 redis 服务,部署时最好的策略是什么?您是否有用于生产的自定义 docker-compose 配置,它删除了 redis 和 mysql 服务(假设您希望将它们放在自己的专用服务器上)?
我想我会自己回答这个问题。
经过更深入的挖掘,我发现将数据库部署在容器中并不是一个好主意。如果我使用 swarm,将很难在整个系统中保持数据完整性。
看起来大多数人只是单独托管数据库,并且只在本地开发环境中容器化数据库。
因此对于部署,目前最好的选择是仅部署已配置的 Web 服务器和任何其他无状态服务器要求。
在生产环境中 运行 PHP 容器有很多可行的方法,因此很难全面地回答您的问题。我将提供几个选项:
- 使用像 Docker Cloud 这样的容器托管服务来托管带有内置 Apache 服务的 PHP 代码。
- 使用编排服务(例如Swarm or Kubernetes) hosted on your own servers. You'll have more setup here, but it will also give you more control. There are also services that make this easier like Rancher or Codemason。
- 运行 docker-在一台机器上编写。当然,它不能横向扩展,但如果你只是在做一个副项目或小应用程序,你可以 运行 在一台服务器上启动所有容器。
关于数据库容器,您可以容器化您的数据库,假设您将实际数据放在一个卷中并有一个合理的备份系统,没有理由容器将不安全。您可能希望从 运行 只为数据库设置一个容器或使用托管数据库服务开始,因为跨多个容器扩展数据库会变得很复杂(但 here's a little bit about how you might do it with MySQL)。
我决定开始在我的所有项目中使用 docker,并且我对部署方面的最佳实践很感兴趣。
如果我有一个本地 docker 环境,即 运行 一个 php-apache、mysql 和 redis 服务,部署时最好的策略是什么?您是否有用于生产的自定义 docker-compose 配置,它删除了 redis 和 mysql 服务(假设您希望将它们放在自己的专用服务器上)?
我想我会自己回答这个问题。
经过更深入的挖掘,我发现将数据库部署在容器中并不是一个好主意。如果我使用 swarm,将很难在整个系统中保持数据完整性。
看起来大多数人只是单独托管数据库,并且只在本地开发环境中容器化数据库。
因此对于部署,目前最好的选择是仅部署已配置的 Web 服务器和任何其他无状态服务器要求。
在生产环境中 运行 PHP 容器有很多可行的方法,因此很难全面地回答您的问题。我将提供几个选项:
- 使用像 Docker Cloud 这样的容器托管服务来托管带有内置 Apache 服务的 PHP 代码。
- 使用编排服务(例如Swarm or Kubernetes) hosted on your own servers. You'll have more setup here, but it will also give you more control. There are also services that make this easier like Rancher or Codemason。
- 运行 docker-在一台机器上编写。当然,它不能横向扩展,但如果你只是在做一个副项目或小应用程序,你可以 运行 在一台服务器上启动所有容器。
关于数据库容器,您可以容器化您的数据库,假设您将实际数据放在一个卷中并有一个合理的备份系统,没有理由容器将不安全。您可能希望从 运行 只为数据库设置一个容器或使用托管数据库服务开始,因为跨多个容器扩展数据库会变得很复杂(但 here's a little bit about how you might do it with MySQL)。