我打算将应用程序堆栈迁移到Docker。让我描述一下我当前正在使用的服务:

  • HAProxy ,用于所有服务的连接(HTTP和原始TCP连接)上的SSL终止,并将流量转发到下面的服务。
  • Nginx ,它提供静态文件,例如更新和一些信息页面。
  • Node.js ,它运行主要应用程序。
  • MySQL(MariaDB),所有应用程序使用和共享的数据库。

  • 我的问题是关于数据库的。

    在这种情况下,运行MariaDB的正确方法是什么?
  • 是否将其与其他服务一起安装并运行在我的容器中?
  • 在单独的容器中运行official image,并使用Docker的--link命令的run选项将我的容器链接到它吗?

  • 第一种选择有什么缺点吗?

    TeamSpeak docker container使用第二个选项,这就是让我问自己有关运行数据库的正确方式的问题,但是我特别想将所有服务打包在自己的镜像中。

    最佳答案

    Docker哲学:将您的应用程序拆分为microservices,并为每个microservice使用一个容器。

    在您的情况下,我建议使用MariaDB容器,使用官方(Library)镜像可以使更新管理更加轻松,但是可以随意使用自定义镜像。

    一个HAProxy容器,一个nginx容器和一个nodejs容器。

    通过这种方式,您可以将应用程序划分为microservices,并且可以在隔离的环境中更轻松地对其进行升级,管理和故障排除。

    如果您正在考虑通过docker将应用程序交付给最终用户,则可以使用简单的docker-compose文件轻松启动所需的容器。

    关于mysql - 使用MySQL/MariaDB数据库创建Docker容器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40603395/

    10-16 23:09
    查看更多